在子查询级别2中使用表的列

时间:2019-06-11 00:37:17

标签: mysql

我的查询具有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”

1 个答案:

答案 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符号。