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

SQL での「サブクエリは複数の行を返します」エラーを修正するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-03 14:16:19
オリジナル
789 人が閲覧しました

How Can I Fix the

「サブクエリは 1 行以上を返します」エラーを解決する

複数のサブクエリ値を使用した条件の設定

「サブクエリは 1 行以上を返します」エラーの解決サブクエリの結果に基づいて条件を設定しようとすると、" エラーが発生してイライラすることがあります。このエラーは、サブクエリが複数の行を返すのに、メイン クエリが 1 行だけを期待している場合に発生します。

この問題を解決するには、等価演算子 (=) と IN 演算子の違いを理解することが重要です。等価演算子は 2 つの値のみを比較でき、サブクエリが 1 つの値を返すことを期待します。一方、IN 演算子を使用すると、値を複数の値、またはサブクエリによって返された値のセットと比較できます。

IN 演算子の使用

サブクエリが複数の行を返す場合、 IN 演算子を使用して、メイン クエリの値をこれらの複数の値と比較する必要があります。構文は次のとおりです。

SELECT *
FROM table
WHERE id IN (subquery)
ログイン後にコピー

この例では、サブクエリは複数の行を返し、メイン クエリは id 列がそれらの行値のいずれかに一致するかどうかを確認します。

例使用法

次のシナリオを考えてみましょう:

  • クエリ 1: SELECT id FROM table1 は、値 1、2、および 3 を持つ複数の行を返します。
  • クエリ 2: SELECT * FROM table2 WHERE id = (SELECT id FROM table1) は、サブクエリが複数の行を返すため、エラーが発生します。

このエラーを解決するには、IN を使用するようにクエリ 2 を変更します。演算子:

SELECT * 
FROM table2 
WHERE id IN (SELECT id FROM table1)
ログイン後にコピー

これで、クエリ 2 は、id 列がサブクエリによって返された値のいずれかと一致するレコードを table2 から正しく取得します。

結論

理解サブクエリを操作する場合、等価演算子と IN 演算子の区別は不可欠です。 IN 演算子を使用すると、「サブクエリが複数の行を返します」というエラーを克服し、サブクエリから取得した複数の値に基づいて基準を効果的に設定できます。

以上がSQL での「サブクエリは複数の行を返します」エラーを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート