Come può la query di seguito essere regolato per tornare sempre il membro con MemberID = 'xxx' come prima rigaRegola query SQL per forzare la visualizzazione di un record prima?
SELECT * FROM Utenti
Come può la query di seguito essere regolato per tornare sempre il membro con MemberID = 'xxx' come prima rigaRegola query SQL per forzare la visualizzazione di un record prima?
SELECT * FROM Utenti
select * from Members
order by case when MemberID = XXX then 0 else 1 end
Questo dovrebbe funzionare e vi permetterà anche di ordinare le voci rimanenti da MemberID (Assumendo xxx = 12 in questo esempio)
SELECT *
FROM Members
ORDER BY CASE WHEN MemberID=12 THEN NULL ELSE isnull(MemberID,0) END
Se la colonna memberID non può contenere valori nulli, è possibile ottenere via con questo, che potrebbe svolgere un po 'meglio.
SELECT *
FROM Members
ORDER BY CASE WHEN MemberID=12 THEN NULL ELSE MemberID END
Cosa succede se MemberID contiene valori negativi? – Magnus
Suppongo che sia probabilmente una colonna di identità. Se contiene valori negativi, puoi semplicemente sostituire il -1 con un valore null. Aggiornato la mia risposta per essere più robusto e gestire i valori di memberID negativi. – JohnFx
SELECT
CASE WHEN MemberID = 'xxx' AS 1 ELSE 0 END CASE AS magic,
*
FROM Members
ORDER BY magic DESC
La sintassi può variare a seconda yr db, ma spero che si ottiene l'idea.
provare questo:
SELECT * FROM Members
ORDER BY IF(x.MemberId = XXX, -1, ABS(x.MemberId))
Questo non darà alcun risultato .. –
SELECT * FROM `Members` WHERE `MemberID` = '[ID]' LIMIT 1 UNION SELECT * FROM `Members`
Questo dovrebbe funzionare. Testato sulla mia istanza di database. L'ID scelto è sempre il primo.
Questo non è garantito per dare il risultato corretto. – Magnus
Una soluzione più robusta, se hai più di un record che deve essere flottato verso l'alto, o se hai un ordine specifico per più record, è quello di aggiungere una colonna ResultsOrder alla tua tabella, o anche un'altra tabella MemberOrder (memberid, resultorder). Riempi il risultato con numeri grandi e ...
Select m.*
From Members m
Left Join MemberOrder mo on m.MemberID=mo.MemberID
Order by coalesce(mo.resultorder, 0) DESC
Quale piattaforma DB? – JohnFx
SQL Server 2008 – SShebly