Jak poniższe zapytanie być dostosowane do powrotu zawsze element z MemberID = „XXX” w pierwszym rzędzieDostosuj zapytanie SQL, aby wymusić, aby rekord pojawił się jako pierwszy?
SELECT * FROM Członków
Jak poniższe zapytanie być dostosowane do powrotu zawsze element z MemberID = „XXX” w pierwszym rzędzieDostosuj zapytanie SQL, aby wymusić, aby rekord pojawił się jako pierwszy?
SELECT * FROM Członków
select * from Members
order by case when MemberID = XXX then 0 else 1 end
To powinno działać i będzie to również pozwalają zamówić pozostałe elementy przez memberID (Zakładając xxx = 12 w tym przykładzie)
SELECT *
FROM Members
ORDER BY CASE WHEN MemberID=12 THEN NULL ELSE isnull(MemberID,0) END
Jeśli kolumna memberID nie mogą zawierać wartości null, można uciec z tego co może wykonać nieco lepiej.
SELECT *
FROM Members
ORDER BY CASE WHEN MemberID=12 THEN NULL ELSE MemberID END
Co jeśli identyfikator członkowski zawiera wartości ujemne? – Magnus
Zakładam, że jest to prawdopodobnie kolumna tożsamości. Jeśli zawiera wartości ujemne, możesz po prostu zastąpić -1 wartością pustą. Zaktualizowałem swoją odpowiedź, aby była bardziej niezawodna i obsługiwać wartości ujemnych identyfikatorów. – JohnFx
SELECT
CASE WHEN MemberID = 'xxx' AS 1 ELSE 0 END CASE AS magic,
*
FROM Members
ORDER BY magic DESC
Składnia może się różnić w zależności od yr db, ale mam nadzieję, że masz pomysł.
spróbuj tego:
SELECT * FROM Members
ORDER BY IF(x.MemberId = XXX, -1, ABS(x.MemberId))
To nie daje żadnego wyniku. –
SELECT * FROM `Members` WHERE `MemberID` = '[ID]' LIMIT 1 UNION SELECT * FROM `Members`
to powinno działać. Przetestowano na mojej instancji bazy danych. Wybrany ID jest zawsze pierwszy.
To nie gwarantuje poprawnego wyniku. – Magnus
Bardziej niezawodne rozwiązanie, jeśli masz więcej niż jeden rekord, który musi być przeniesiony na szczyt, lub jeśli masz określoną kolejność dla wielu rekordów, to dodaj kolumnę ResultsOrder do tabeli lub nawet innej tabeli MemberOrder (memberid, resultorder). Wypełnij resultorder z dużymi liczbami i ...
Select m.*
From Members m
Left Join MemberOrder mo on m.MemberID=mo.MemberID
Order by coalesce(mo.resultorder, 0) DESC
Co to jest platforma DB? – JohnFx
SQL Server 2008 – SShebly