我的查询具有2级子查询,并且我想在2级子查询中使用表的列,我该怎么做?
它总是给我找不到表的错误列
SELECT * FROM `stores`
WHERE
(SELECT COUNT(ss.id) FROM
(SELECT order_stores.id FROM orders AS order_stores
WHERE stores.id = order_stores.store_id
AND order_stores.id < 0) AS ss) != 0;
它给我这个错误“ where子句”中的未知列“ stores.id”
答案 0 :(得分:0)
让我们对此进行剖析。
如果我们翻译您的整个查询,则意味着“我想在stores
中查找我的表COUNT(ss.id)
中的orders
总数,其中order_stores.store_id
大于{{1 }}”。
您的核心查询是这样:
0
首先,您没有在此处定义SELECT oo.id FROM orders AS order_stores
WHERE stores.id = order_stores.store_id
AND oo.id < 0;
表的位置。其次,您试图从子查询本身之外的方式匹配一列。这是行不通的。
您可以尝试像这样的单个查询:
oo
如果您想查看每个store.id的数量,可以尝试以下查询:
SELECT COUNT(ss.id)
FROM stores ss
JOIN orders os
ON ss.id = os.id
WHERE os.id > 0
HAVING COUNT(ss.id) !=0;
注意:我已将SELECT ss.id,COUNT(ss.id)
FROM stores ss
JOIN orders os
ON ss.id = os.id
WHERE os.id > 0
GROUP BY ss.id
HAVING COUNT(ss.id) !=0;
(id小于'0')更改为WHERE os.id < 0
(id大于'0'),假设它是您要的内容。但是如果相反,您可以更改WHERE os.id > 0
符号。