我有两个表,建立和分支。建立是父表。当我选择分支机构列表时,如果分支标题为空,我希望它检索机构名称。另外,我只想为每个机构显示一个分支。这是我想出的:ORDER BY与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。我能做些什么来解决这个问题?
该组是由不确定的。这是你的问题,整个查询没有意义,因此它混合来自不相关行的数据。 – Johan
您对branch.id和establish_id没有使用任何聚合函数。当有多个建立群体或分支标识时,您需要提供一个聚合函数(例如,最大值)来确定在分组时选择哪些。 – macleojw
你正在选择3,非聚合,branch.id,branch.establishment_ID,branch_title,但只是其中之一(这是无效的,虽然MySQL不抱怨)分组。你应该由他们所有的3人组成。 – nos