sql - 使用 NOT IN 提取数据

标签 sql

我是 sql 新手,遇到了一个小问题。 我有一个这样的查询:

select cust_id, count(1) from all_customers
group by cust_id
having count(1)>4;

那个查询给了我想要的结果。

我需要对 all_customers 表中的所有客户进行新的查询,并排除我刚刚从上面的查询中得到的结果。 我试着做这样的事情:

select * from all_customers
where cust_id NOT IN 
(
    select cust_id, count(1) from all_customers
    group by cust_id
    having count(1)>4
)

但我收到错误消息太多值。 我做错了什么?

最佳答案

您应该去掉NOT IN 子句中的aggregated 列。原因是您只比较 cust_id 列。另请注意,使用 NOT IN 时,子查询应始终返回单列。

select * 
from all_customers
where cust_id NOT IN 
      (
         select cust_id 
         from all_customers
         group by cust_id
         having count(1)>4
      )

关于sql - 使用 NOT IN 提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12603378/

相关文章:

mysql - 如何选择从上一小时到去年之间的行?

mysql - 如何在 MariaDB 中创建更改组标识符

sql - 使用其他表中的多个值的随机更新表

sql - Access SQL 中的合并替代方案

android - 如何从 SQLite 数据库中检索图像?

sql - 如何同时查询父详细信息和顶级子记录?

SQL Server 索引中有两列但只查询一列

javascript - 当每行都有自己的动态值时,动态 php 行仅将第一行的值提供给 javascript 函数

php - 只是想知道一些关于密码的事情

php - 通过连接查询仅从多个表获取列名