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