编辑 - 很抱歉,我第一次没有包含正确的信息!
我有以下两个表:
table 1
+----+-------+-------+
| id | model | color |
+----+-------+-------+
| 1 | 111AA | red |
| 2 | 222BB | blue |
| 3 | 333CC | |
| 4 | 444DD | green |
+----+-------+-------+
table 2
+----+-------+-------+
| id | model | quant |
+----+-------+-------+
| 6 | 111AA | 2 |
| 7 | 222BB | 5 |
| 8 | 222BB | 3 |
+----+-------+-------+
我需要一个查询,该查询将获取表 1 中颜色列不为空的所有行以及表 2 中与特定模型匹配的列数量之和(在给出的示例中,模型 = '222BB' )生成下表:
+----+-------+-------+------+
| id | model | color | quant|
+----+-------+-------+------+
| 1 | 111AA | red | |
| 2 | 222BB | blue | 8 |
| 4 | 444DD | green | |
+----+-------+-------+------+
这是我到目前为止尝试过的:
SELECT t1.id, t1.model, t1.color, SUM(t2.quant)
FROM table1 t1 LEFT OUTER JOIN table2 t2
ON t1.id = t2.id
WHERE t1.color != '' AND t2.model = '222BB'
但是,这不起作用。
非常感谢任何帮助。
谢谢!
最佳答案
要接收预期的表,请运行以下 SQL 查询:
SELECT t1.id, t1.model, t1.color, IF(t2.model = '222BB', SUM(t2.quant), NULL)
FROM table1 t1
LEFT JOIN table2 t2 ON t1.model = t2.model
WHERE t1.color != ''
GROUP BY t1.model
结果将与表中的结果相同。但我认为最好更新设计以在 ID 列上进行联接,而不是在模型名称上进行联接。
关于MYSQL:返回一个表中的所有行以及另一个表中匹配行的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35930726/