繁体   English   中英

ORDER BY无法与GROUP BY一起使用

[英]ORDER BY not working as expected with GROUP BY

我有两个表,建立和分支。 建立是父表。 当选择分支列表时,如果分支标题为空白,我希望它检索机构名称。 另外,我只想为每个机构显示一次分支。 这是我想出的:

SELECT 
  branch.id
  , branch.establishment_ID
  , IFNULL(branch.branch_title, establishment.name) AS branch_title 
FROM branch 
LEFT JOIN establishment ON branch.establishment_ID = establishment.id 
WHERE cityID = 2 
GROUP BY establishment_ID 
ORDER BY branch_title

但是,结果似乎没有任何特定的顺序。 我希望它们按字母顺序排列。 我已经读到MySQL 5.0.5在同一查询中存在GROUP BY和ORDER BY的问题,但是我正在使用5.5.9。 我该如何解决此查询?

我猜(知道其他SQL系统)您的ORDER BY正在应用于branch.branch_title ,而不是您的新别名。 您能够将IFNULL()表达式复制到ORDER BY吗?

SELECT 
  branch.id
  , branch.establishment_ID
  , IFNULL(branch.branch_title, establishment.name) AS branch_title 
FROM branch 
LEFT JOIN establishment ON branch.establishment_ID = establishment.id 
WHERE cityID = 2 
GROUP BY establishment_ID 
ORDER BY IFNULL(branch.branch_title, establishment.name)

否则, NULL branch_title行将始终出现在非NULL行之前(之前/之后),并且不会以任何方式进行排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM