【发布时间】:2017-04-22 23:46:51
【问题描述】:
我有一些关于 UNION 的查询,我想计算它们并在另一个查询中显示为一行
示例:我有一张名为“clients”的表,他们可以在 store1、store2 或 store 3 上购买,我需要在名为“sales”的一行中显示他们的姓名和购买的商品数量
SELECT name,COUNT(*) FROM(
SELECT 1 FROM store1 WHERE store1.client=clients.id
UNION
SELECT 1 FROM store2 WHERE store2.client=clients.id
UNION
SELECT 1 FROM store3 WHERE store3.client=clients.id
) sales
FROM clients
如果 john 从 store 2 购买了 2 件商品,从 store 3 购买了 1 件商品,而 mary 没有购买任何东西,那么预期的结果是这样的:
name | sales
------------
john | 3
mary | 0
但我遇到的是这个错误:
您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在“FROM 客户端”附近使用的正确语法
这是使用另一个选择子查询的另一种尝试:
SELECT name,(
SELECT COUNT(*) FROM(
SELECT 1 FROM store1 WHERE store1.client=clients.id
UNION
SELECT 1 FROM store2 WHERE store2.client=clients.id
UNION
SELECT 1 FROM store3 WHERE store3.client=clients.id
) xxxx -- (mandatory table name)
) sales
FROM clients
这给了我这个错误:
“where 子句”中的未知列“clients.id”
希望你能帮助我,提前谢谢你!
【问题讨论】: