ホームページ >データベース >mysql チュートリアル >複数の行を返すサブクエリを処理するにはどうすればよいですか?
「サブクエリが複数の行を返す」エラーへの対処
サブクエリを扱うときは、サブクエリが複数の行を返す可能性を理解することが重要です。行。これは、「サブクエリが複数の行を返します」エラーの場合のように、適切に処理されないとエラーにつながる可能性があります。
複数の値を返すサブクエリ
核心この問題の最大の原因は、問題のサブクエリが複数の行を返すという事実にあります。サブクエリから取得した値に依存する条件がメイン クエリで指定されている場合、このエラーが発生します。
複数の値に IN を使用する
この問題を解決するには、 IN 演算子を使用する必要があります。単一の値を期待する等価 (=) 演算子とは異なり、IN では複数の値を指定できます。サブクエリで IN を使用するための構文は次のとおりです:
select * <br>from table<br>where id IN (subquery);<br>
この例では、サブクエリは複数の値を返し、テーブルの id 列はそれらのいずれかと照合されます。
例:
たとえば、次のクエリを考えてみましょう:
SELECT *<br>FROM Students<br> WHERE マーク = (学生から MAX(マーク) を選択); -- 1 つの値のみを返します</p> <p>SELECT *<br>FROM Students<br>WHERE Marks IN</p> <pre class="brush:php;toolbar:false"> (SELECT Marks FROM Students ORDER BY Marks DESC LIMIT 10); -- Returns 10 values
最初のクエリでは、サブクエリは、単一値である最大マークを返します。したがって、等価演算子 (=) を使用できます。ただし、2 番目のクエリでは、サブクエリは複数の値である上位 10 個のマークを返します。したがって、IN 演算子が必要です。
IN を使用すると、複数の行を返すサブクエリを効果的に処理でき、メイン クエリの条件が適切に満たされるようになり、「サブクエリが複数の行を返す」問題を解決できます。事実上エラーです。
以上が複数の行を返すサブクエリを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。