SQL中的"WHERE 1 IN"子句

Art*_*hur 2 sql where-in

我是SQL新手并且对"WHERE 1 IN"子句感到困惑,我的问题是:

让我们以w3schools的数据库为例.

如果我查询为:

SELECT C1.CustomerID From Customers C1
WHERE 1 IN 
  (SELECT COUNT(O1.CustomerID) FROM Orders O1 
   WHERE C1.CustomerID = O1.CustomerID);
Run Code Online (Sandbox Code Playgroud)

这个查询是什么意思?任何帮助将不胜感激,谢谢!

Gor*_*off 5

此查询表明客户的订单数为1.如果使用=以下方式编写,则可能更清晰:

SELECT C1.CustomerID
FROM Customers C1
WHERE 1 = (SELECT COUNT(O1.CustomerID)
           FROM Orders O1 
           WHERE C1.CustomerID = O1.CustomerID
          );
Run Code Online (Sandbox Code Playgroud)

子查询称为相关子查询,因为该WHERE子句具有来自外部查询的列.因此,对于每个客户,它计算与该客户ID匹配的订单数量.只有具有一个订单的客户才在结果集中.