如何在mysqli中设置多个“order by”?

时间:2013-01-28 17:22:13

标签: sql mysqli sql-order-by

我即将为我的网站制作一个订阅列表,但是在我的查询中找不到多个“order by”的解决方案,这实际上有效。

我目前的代码是:

 select name from data_subscriptions 
 where authVal="1" 
 order by id desc, name asc limit 100

但我只按id desc订购,而不是名称asc。

数据库:

[1] ( id=1, authVal=1, name=Alex )
[2] ( id=2, authVal=1, name=Jens )

它显示了Jens,然后是Alex - 我做错了什么?

2 个答案:

答案 0 :(得分:7)

我想也许你想要的是这个:

order by name asc, id desc

这相当于按名称排序,但如果名称相同,则按ID排序

您现有的代码将按ID排序,如果ID相同,则按名称排序。我的猜测是,id永远不会相同,所以它总是以id顺序结束。

答案 1 :(得分:0)

您需要按最重要到最不重要的顺序排序。

order by lastname asc, firstname asc

这将按姓氏和名字排序。仅当姓氏在两行之间匹配时才考虑第一个名称。

Doe, John
Smith, Able
Smith, Joe
Smith, John

在你的情况下,id很可能是你的PK。在这种情况下,它永远不应该与其他任何人匹配,因此次要排序永远不会发挥作用。