Sql server SQL:Msg 116,级别16,状态1,第1行当子查询没有引入EXISTS时,只能在select列表中指定一个表达式
请帮我解决这个问题 Msg 116,16级,状态1,第1行 当子查询未使用导入时,只能在选择列表中指定一个表达式 存在 这是我的问题Sql server SQL:Msg 116,级别16,状态1,第1行当子查询没有引入EXISTS时,只能在select列表中指定一个表达式,sql-server,tsql,select,Sql Server,Tsql,Select,请帮我解决这个问题 Msg 116,16级,状态1,第1行 当子查询未使用导入时,只能在选择列表中指定一个表达式 存在 这是我的问题 SELECT a.RegId, a.PropertyThumbnail FROM tblPropertyDetail a WHERE a.RegId NOT IN ( SELECT RegId, COUNT(RegId) AS NumOccurrence
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)
)
在子查询COUNTRegId中将此列作为numocurrences删除 使用NOT IN时,子查询返回的列数应该只有一列 或者,也可以使用JOIN执行此操作
在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
+1 CTE FTW,功能强大,通常使查询更易于阅读。
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
;WITH cte AS
(
SELECT RegId, PropertyThumbnail, COUNT(*) OVER (PARTITION BY RegId) AS cnt
FROM tblPropertyDetail
)
SELECT RegId, PropertyThumbnail
FROM cte
WHERE cnt <= 1