1. ホーム
  2. SQL

SQLラーニングノート--オペランドには1つのカラムが必要です。

2022-01-24 23:31:24

コード

select d.Name as Department,e.Name as Employee,e.Salary
from Department as d,Employee as e
where d.Id=e.DepartmentId 
      and d.Id in (select max(Salary),Employee.DepartmentId 
                   from Employee
                   group by DepartmentId);

エラーを報告する

Operand should contain 1 column(s)

理由

サブクエリでは、データは2つのフィールドでチェックアウトされ、whereステートメント、" ... d.Id in ..." では、クエリするフィールドは1つだけです。つまり、前後のフィールドの数が一致しないのです。in述語を使う場合、inの左側と右側のフィールドの数は同じであるべきです。上記のコードを以下のように変更するとうまくいきます。

select d.Name as Department,e.Name as Employee,e.Salary
from Department as d,Employee as e
where d.Id=e.DepartmentId 
      and (e.Salary, d.Id) in (select max(Salary),Employee.DepartmentId 
                   from Employee
                   group by DepartmentId);