mysql - 未订购的客户

标签 mysql sql sql-server datetime

我有两个表,第一个是客户,第二个是订单详情。我想要从第 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/

相关文章:

mysql - 加快 MySQL 中的更新

sql - 在价格发生变化时查找每个项目的最新生效日期 - SQL Server 2014

sql-server - SQL Server 2008 安装失败 : Value cannot be null. 参数名称:doc

sql - 如何在 SQL Server 2008 中删除具有对象依赖关系的列?

python - 存储用户对数据行的权限

MySQL - 优化查询并根据列总和查找排名

mysql - 计算 SQL 中的子字符串(在 Digital Metaphors 的 ReportBuilder 中)

mysql - 删除子查询

mysql - 如何加快对 mysql 表的搜索?

sql - 使用 Powershell 从 SQL Server 2008 R2 导出到固定宽度的文本文件