我想从两个表中获取数据:
+----+------+
| id | name |
+----+------+
| 1 | John |
| 2 | Alex |
| 3 | Able |
| 4 | Ash |
+----+------+
+------+------+
| name | sale |
+------+------+
| John | 100 |
| Alex | 200 |
| Able | 300 |
| Able | 100 |
| Alex | 500 |
+------+------+
从第一个表中检索所有代理名称,从第二个表中检索销售总额。如果没有任何用户销售,那么它必须给我零或零值。
答案 0 :(得分:1)
要在没有销售的情况下返回空值,您可以使用左外连接。
SELECT
agent.name
, SUM(sale) AS totalSales
FROM
agent
LEFT OUTER JOIN sale ON agent.name = sale.name
GROUP BY
agent.name
如果您希望该值为零,则可以使用coalesce或isnull函数
SELECT
agent.name
, COALESCE(SUM(sale),0) AS totalSales
FROM
agent
LEFT OUTER JOIN sale ON agent.name = sale.name
GROUP BY
agent.name
答案 1 :(得分:0)
您可能希望使用左连接,因为您希望结果中的每个销售人员都有一行。所以,像:
SELECT a.name, SUM(s.sale)
FROM Agent a
LEFT JOIN Sale s on a.name = s.name
GROUP BY a.name