我有两个表,第一个是客户,第二个是订单详情。我想要从第 4 区开始注册的列表,并排除已购买的客户列表。
SELECT *
FROM Customer
WHERE RegisteredDate BETWEEN CONVERT(DATETIME,CONVERT(VARCHAR(50),'12/04/2015',101))
AND CONVERT(DATETIME,CONVERT(VARCHAR(50),'12/07/2015',101))
AND CustomerID NOT IN(SELECT *
FROM Customer c
INNER JOIN orderdetails od ON c.CustomerId = od.CustomerID
WHERE C.RegisteredDate
BETWEEN CONVERT(DATETIME,CONVERT(VARCHAR(50),'12/04/2015',101))
AND CONVERT(DATETIME,CONVERT(VARCHAR(50),'12/07/2015',101))
AND Transactionid IS NOT NULL
)
结果是:
Msg 116, Level 16, State 1, Line 13 Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
最佳答案
删除子查询中的 *(所有列)并在子查询中指定选择 CustomerID 而不是 *(所有列)。
因为在使用NOT IN时,期望子查询返回的列数只有一个。
关于mysql - 未订购的客户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34130173/