如何调整以下查询以始终返回MemberID ='xxx'作为第一行的成员
SELECT * FROM Members
答案 0 :(得分:12)
select * from Members
order by case when MemberID = XXX then 0 else 1 end
答案 1 :(得分:6)
这应该有效,它还允许您按MemberID订购剩余的项目(在本例中假设xxx = 12)
SELECT *
FROM Members
ORDER BY CASE WHEN MemberID=12 THEN NULL ELSE isnull(MemberID,0) END
如果memberID列不能包含空值,那么可以使用它可以稍微好一点。
SELECT *
FROM Members
ORDER BY CASE WHEN MemberID=12 THEN NULL ELSE MemberID END
答案 2 :(得分:0)
SELECT
CASE WHEN MemberID = 'xxx' AS 1 ELSE 0 END CASE AS magic,
*
FROM Members
ORDER BY magic DESC
语法可能因yr db而异,但我希望你明白这一点。
答案 3 :(得分:0)
SELECT * FROM `Members` WHERE `MemberID` = '[ID]' LIMIT 1 UNION SELECT * FROM `Members`
这应该有效。在我的数据库实例上测试过。选择的ID总是第一位。
答案 4 :(得分:0)
更强大的解决方案,如果您有多个记录必须浮动到顶部,或者您有多个记录的特定订单,则将ResultsOrder列添加到您的表,甚至是另一个表MemberOrder (memberid,resultorder)。用大数字填充结果序列......
Select m.*
From Members m
Left Join MemberOrder mo on m.MemberID=mo.MemberID
Order by coalesce(mo.resultorder, 0) DESC
答案 5 :(得分:-1)
试试这个:
SELECT * FROM Members
ORDER BY IF(x.MemberId = XXX, -1, ABS(x.MemberId))