mysql按第一行上的特定变量排序

时间:2015-02-06 05:43:31

标签: php mysql

我用php来查询我的mysql数据库。我无法按照自己的喜好订购桌面上的数据。我希望第一行是我在变量$ username中定义的用户名,然后其余按用户名排序,如下面的查询中所示:

SELECT * FROM report ORDER BY username = '$username', username DESC

2 个答案:

答案 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添加。

(实际上,使用表达式而不是12值可能更短,但我想UNION的解决方法是一个更简单的示例。)

答案 1 :(得分:0)

根据马里奥的回答:

如果您使用限制,那么它也可以在不使用假列(1,2 / prio)的情况下正常工作

(SELECT * FROM report WHERE username = '$username') union (SELECT * FROM report order by username DESC limit 100)

谢谢,