1. ホーム
  2. mysql

[解決済み] サブクエリが1行以上を返す」エラーの解決法

2022-03-04 10:26:44

質問

複数行を返すクエリと、複数行の値のいずれかを条件とするクエリがあります。

select * 
from table
where id= (multiple row query);

ここで multiple row query は複数行を返します。もしこれらの行の値が1,2,3であれば、idを1か2か3に設定したいのです。

どのように解決するのですか?

= は、サブクエリが1つの値しか返さない場合に使用できます。

サブクエリが1つ以上の値を返す場合には IN :

select * 
from table
where id IN (multiple row query);

例えば

SELECT *
FROM Students
WHERE Marks = (SELECT MAX(Marks) FROM Students)   --Subquery returns only 1 value

SELECT *
FROM Students
WHERE Marks IN 
      (SELECT Marks 
       FROM Students 
       ORDER BY Marks DESC
       LIMIT 10)                       --Subquery returns 10 values