我即将为我的网站制作一个订阅列表,但是在我的查询中找不到多个“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 - 我做错了什么?
答案 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。在这种情况下,它永远不应该与其他任何人匹配,因此次要排序永远不会发挥作用。