1

我即将为我的网站制作一个订阅列表,但在我的查询中找不到多个“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 - 我做错了什么?

4

2 回答 2

9

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

order by name asc, id desc

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

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

于 2013-01-28T17:24:57.637 回答
0

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

order by lastname asc, firstname asc

这将按姓氏然后名字排序。仅当姓氏在两行之间匹配时才考虑名字。

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

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

于 2013-01-28T17:25:57.367 回答