0

この問題を修正する方法を教えてください

メッセージ116、レベル16、状態1、行1
サブクエリがEXISTSで導入されていない場合、選択リストで指定できる式は1つだけです。

これが私の質問です

SELECT  a.RegId,
        a.PropertyThumbnail
FROM    tblPropertyDetail a
WHERE   a.RegId NOT IN 
        (
            SELECT  RegId,
                    COUNT(RegId) AS NumOccurrences
            FROM tblPropertyDetail
            GROUP BY RegId
            HAVING (COUNT(RegId) > 1)
        )
4

2 に答える 2

6

サブクエリでこの列を削除しますCOUNT(RegId) AS NumOccurrences

SELECT a.RegId,
        a.PropertyThumbnail
FROM tblPropertyDetail a
WHERE a.RegId NOT IN (
                SELECT RegId
                FROM tblPropertyDetail
                GROUP BY RegId
                HAVING (COUNT(RegId) > 1)
                )

を使用する場合NOT IN、サブクエリによって返される列の数は1つだけであると予想されます。

または、次を使用してこれを行うこともできますJOIN

SELECT  a.RegId,
        a.PropertyThumbnail
FROM    tblPropertyDetail a
        LEFT JOIN
        (
            SELECT RegId, COUNT(RegId) AS NumOccurrences
            FROM tblPropertyDetail
            GROUP BY RegId
            HAVING (COUNT(RegId) > 1)
        ) b ON a.RegId = b.RegId
WHERE   b.RegId IS NULL
于 2012-12-29T09:39:29.580 に答える
1

SQLServer2005+ では、集計ウィンドウ関数で CTE を使用します

;WITH cte AS
 (
  SELECT RegId, PropertyThumbnail, COUNT(*) OVER (PARTITION BY RegId) AS cnt
  FROM tblPropertyDetail
  )
  SELECT RegId, PropertyThumbnail
  FROM cte
  WHERE cnt <= 1
于 2012-12-29T10:16:22.357 に答える