2

私は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
)

しかし、エラーメッセージが表示されますtoo many values。私は何を間違っていますか?

4

2 に答える 2

6

句の集計列を削除する必要があります。その理由は、列NOT INを比較しているだけだからです。を使用する場合、サブクエリは常に単一の列を返す必要がある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
      )
于 2012-09-26T13:57:35.660 に答える
1

サブクエリには非常に多くの列があります。試してください:

select * from all_customers
where cust_id NOT IN 
(select cust_id
 from all_customers
 group by cust_id
 having count(1)>4)
于 2012-09-26T13:58:24.990 に答える