ホームページ >データベース >mysql チュートリアル >複数の行を返すサブクエリを処理するにはどうすればよいですか?

複数の行を返すサブクエリを処理するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-20 08:19:10323ブラウズ

How to Handle Subqueries Returning More Than One Row?

「サブクエリが複数の行を返す」エラーへの対処

サブクエリを扱うときは、サブクエリが複数の行を返す可能性を理解することが重要です。行。これは、「サブクエリが複数の行を返します」エラーの場合のように、適切に処理されないとエラーにつながる可能性があります。

複数の値を返すサブクエリ

核心この問題の最大の原因は、問題のサブクエリが複数の行を返すという事実にあります。サブクエリから取得した値に依存する条件がメイン クエリで指定されている場合、このエラーが発生します。

複数の値に 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。