[英]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.