ホームページ > データベース > mysql チュートリアル > WHERE IN 句内の SQL サブクエリが「選択リストで指定できる式は 1 つだけ」を返すのはなぜですか?

WHERE IN 句内の SQL サブクエリが「選択リストで指定できる式は 1 つだけ」を返すのはなぜですか?

DDD
リリース: 2025-01-11 13:22:41
オリジナル
675 人が閲覧しました

Why Does My SQL Subquery in a WHERE IN Clause Return

WHERE IN 句での SQL サブクエリ選択: エラー「サブクエリが EXISTS で始まらない場合、選択リストには式を 1 つだけ指定できます」

WHERE IN 句にサブクエリを追加しようとするときは、サブクエリが比較のために単一の列を返すことを常に確認してください。 「サブクエリが EXISTS で始まらない場合、選択リストには式を 1 つだけ指定できます」というエラーは、サブクエリが複数の列を返すことを意味します。

これを修正するために、指定されたクエリを調べてみましょう:

<code class="language-sql">select count(distinct dNum)
from myDB.dbo.AQ
where A_ID in
(SELECT DISTINCT TOP (0.1) PERCENT A_ID,
            COUNT(DISTINCT dNum) AS ud
FROM myDB.dbo.AQ
WHERE M > 1 and B = 0
GROUP BY A_ID ORDER BY ud DESC)</code>
ログイン後にコピー

括弧内のサブクエリは、A_ID と ud (各 A_ID の個別の dNum 値の数) の 2 つの列を返します。ただし、WHERE IN 句では、A_ID と比較する単一の列が想定されます。したがって、A_ID 列のみを返すようにサブクエリを変更する必要があります:

<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 句での比較に使用できる単一の列 A_ID を返すようになりました。さらに、A_ID 値の上位 0.1% のみを選択する必要がなくなったため、COUNT(DISTINCT dNum) AS ud 句を削除できます。

この変更されたクエリにより、指定されたエラーが解決され、必要な結果を取得できるようになります。 WHERE IN 句でサブクエリを使用する場合は、サブクエリが比較に必要な列のみを返すようにしてください。

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

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