ホームページ > データベース > mysql チュートリアル > SQL サブクエリが「サブクエリが EXISTS で導入されていない場合、選択リストで指定できる式は 1 つだけです」を返すのはなぜですか?

SQL サブクエリが「サブクエリが EXISTS で導入されていない場合、選択リストで指定できる式は 1 つだけです」を返すのはなぜですか?

Mary-Kate Olsen
リリース: 2025-01-11 13:32:44
オリジナル
549 人が閲覧しました

Why Does My SQL Subquery Return

SQL サブクエリ選択リストの制限

「サブクエリが EXISTS で始まらない場合、選択リストに指定できる式は 1 つだけです」というエラーが発生した場合は、サブクエリの戻り値に問題があることを意味します。 WHERE IN 句内にネストされたサブクエリでは、IN の反対側との比較のために 1 つの列のみが返されるようにすることが重要です。

最初に提供されたクエリには、A_ID と COUNT(DISTINCT dNum) を ud として返すサブクエリが含まれています。ただし、WHERE IN 句では、サブクエリはメイン クエリの A_ID と比較される 1 つの列のみを返すことができます。この制限が存在する理由は、サブクエリの機能が値のリストを返し、メイン クエリの A_ID がサブクエリ結果の値と一致するかどうかを確認することであるためです。

この問題を解決するには、メイン クエリの WHERE IN 句の A_ID と比較される A_ID 列のみを返すようにサブクエリを変更します。さらに、ORDER 句でソートを使用すると、COUNT を列として返さずにサブクエリから行を選択できます。

修正されたクエリの例:

<code class="language-sql">SELECT COUNT(DISTINCT dNum)
FROM myDB.dbo.AQ
WHERE A_ID IN (
    SELECT DISTINCT TOP (0.1) PERCENT A_ID
    FROM myDB.dbo.AQ
    WHERE M > 1 AND B = 0
    GROUP BY A_ID
    ORDER BY COUNT(DISTINCT dNum) DESC
)</code>
ログイン後にコピー

これらの変更を実装することで、クエリは WHERE IN 比較で単一の列を返すというルールを守りながら、目的の結果を正しく返すことができます。

以上がSQL サブクエリが「サブクエリが EXISTS で導入されていない場合、選択リストで指定できる式は 1 つだけです」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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