我有这个查询:
user
我有这些表:
id
我明白了:
实际输出
topic
我正在尝试获得以下结果:
所需的输出
title
可能出现此结果吗?也许调整我的查询?
我尝试不使用distinctAlias
,但在那种情况下,我只得到1行,总计distinctAlias
。
答案 0 :(得分:0)
如果要将不同的位置分隔到不同的行,则需要将该列添加到group by
子句中:
SELECT c.`id`, w.`qty`, COUNT(c.`id`) AS pieces, c.`location`
FROM `control` AS c
LEFT JOIN `warehouse` AS w ON w.`id` = c.`id`
WHERE c.`code` = '40'
GROUP BY c.`id`, c.`location`
-- Here ---------^
答案 1 :(得分:0)
我怀疑您只需要在qty
子句中添加location
和group by
:
SELECT c.`id`, w.`qty`, COUNT(*) AS pieces, c.`location`
FROM `control` AS c
LEFT JOIN `warehouse` AS w ON w.`id` = c.`id`
WHERE c.`code` = '40'
GROUP BY c.`id`, w.`qty`, c.`location`
从MySQL 5.7开始,必须在group by
子句中列出所有非聚合列(除非您更改默认的SQL选项ONLY_FULL_GROUP_BY
);大多数其他数据库也实现此约束。我建议您习惯一下...
旁注:
COUNT(c.id)
最好写成COUNT(*)
,因为id
似乎是不可为空的列
一般来说,除非绝对必要,否则应避免在表名和列名前后使用反引号。