按用户名排序,先指定名称(php)
我一直在寻找,但我找不到任何方法来做到这一点。我正在尝试按用户名排序sql结果,但首先使用特定名称,我不知道这是否可行,下面是代码:按用户名排序,先指定名称(php),php,Php,我一直在寻找,但我找不到任何方法来做到这一点。我正在尝试按用户名排序sql结果,但首先使用特定名称,我不知道这是否可行,下面是代码: SELECT A.user_id, A.username, B.user_colour FROM likes AS A, users AS B WHERE sta_id=$sta_id AND A.user_id = B.user_id ORDER BY username ASC; 我首先要显示的特定名称称之为“te
SELECT A.user_id, A.username, B.user_colour FROM likes AS A, users AS B
WHERE sta_id=$sta_id AND A.user_id = B.user_id
ORDER BY username ASC;
我首先要显示的特定名称称之为“testing”。您可以将case语句放入
ORDER BY
中,这将有效地为特定名称分配比其他名称更低的值。然后是一个常规的用户名
顺序,其余的按字母顺序排列
SELECT A.user_id, A.username, B.user_colour FROM likes AS A, users AS B
WHERE sta_id=$sta_id AND A.user_id = B.user_id
ORDER BY
CASE WHEN A.username = 'some specific name' THEN 0 ELSE 1 END,
username ASC;
应该做得很好。您正在将
DESC
排序(0上的1)与ASC
排序相结合,这是手册中特别建议的;)啊,你删掉了我的评论:D很好。非常感谢,但我有一个错误:order子句中的“username”列是ambiguous@user1133401应该是A.username
。修正了上面的问题。我这么问是因为我太懒了,不能在这个问题上使用RTFM。在您的orderby
中使用IF
是否会阻止MySQL使用索引进行排序?啊。。。我真的不知道。您必须对其运行EXPLAIN
才能找到答案。@rdlowrey,恐怕即使='testing'
也会阻止mysql使用索引进行排序。
ORDER BY (username='testing') DESC,username ASC
ORDER BY (username='testing') DESC,username ASC