「サブクエリは 1 行以上を返します」エラーの解決サブクエリの結果に基づいて条件を設定しようとすると、" エラーが発生してイライラすることがあります。このエラーは、サブクエリが複数の行を返すのに、メイン クエリが 1 行だけを期待している場合に発生します。
この問題を解決するには、等価演算子 (=) と IN 演算子の違いを理解することが重要です。等価演算子は 2 つの値のみを比較でき、サブクエリが 1 つの値を返すことを期待します。一方、IN 演算子を使用すると、値を複数の値、またはサブクエリによって返された値のセットと比較できます。
サブクエリが複数の行を返す場合、 IN 演算子を使用して、メイン クエリの値をこれらの複数の値と比較する必要があります。構文は次のとおりです。
SELECT * FROM table WHERE id IN (subquery)
この例では、サブクエリは複数の行を返し、メイン クエリは id 列がそれらの行値のいずれかに一致するかどうかを確認します。
次のシナリオを考えてみましょう:
このエラーを解決するには、IN を使用するようにクエリ 2 を変更します。演算子:
SELECT * FROM table2 WHERE id IN (SELECT id FROM table1)
これで、クエリ 2 は、id 列がサブクエリによって返された値のいずれかと一致するレコードを table2 から正しく取得します。
理解サブクエリを操作する場合、等価演算子と IN 演算子の区別は不可欠です。 IN 演算子を使用すると、「サブクエリが複数の行を返します」というエラーを克服し、サブクエリから取得した複数の値に基づいて基準を効果的に設定できます。
以上がSQL での「サブクエリは複数の行を返します」エラーを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。