我用php来查询我的mysql数据库。我无法按照自己的喜好订购桌面上的数据。我希望第一行是我在变量$ username中定义的用户名,然后其余按用户名排序,如下面的查询中所示:
SELECT * FROM report ORDER BY username = '$username', username DESC
答案 0 :(得分:0)
然后使用UNION
查询。让第一个SELECT只返回匹配的$ username,第二个SELECT返回除了 - 和order。之外的所有内容。
(SELECT *, 1 AS prio FROM tbl WHERE username = ?)
UNION ALL
(SELECT *, 2 AS prio FROM tbl WHERE username <> ?)
ORDER BY prio ASC, username DESC
这会先添加一个假列prio
来对所需的用户名行进行ORDER,然后再按用户名DESC添加。
(实际上,使用表达式而不是1
和2
值可能更短,但我想UNION的解决方法是一个更简单的示例。)
答案 1 :(得分:0)
根据马里奥的回答:
如果您使用限制,那么它也可以在不使用假列(1,2 / prio)的情况下正常工作
(SELECT * FROM report WHERE username = '$username') union (SELECT * FROM report order by username DESC limit 100)
谢谢,