简体   繁体   English

SQL子查询(在何处)

[英]SQL Sub-query (Where In)

I get an error with my sub-query and am not seeing what I am doing wrong. 我的子查询出现错误,没有看到我在做什么错。 Sub-query works on it's on. 子查询在它上工作。 There Where-In is obviously what is the problem. 哪里有问题显然是什么问题。 Also tried EXISTS. 还尝试了EXISTS。

select [ID NUMBER], [PERNO], [TITLE], [INITIALS], [SURNAME], [DATE OF BIRTH] 
from dbo.[DATASEPT002] 
WHERE [ID NUMBER] IN 
( SELECT [ID NUMBER], COUNT([PERSALNO]) AS COUNTOF 
FROM [dbo].[DATASEPT] 
GROUP BY [ID NUMBER] HAVING COUNT([PERSALNO]) >1 )

You have two columns in the subquery. 您在子查询中有两列。 Only one can be used for the IN comparison: IN比较只能使用一个:

select [ID NUMBER], [PERNO], [TITLE], [INITIALS], [SURNAME], [DATE OF BIRTH] 
from dbo.[DATASEPT002] t
WHERE [ID NUMBER] IN (SELECT [ID NUMBER]
                      FROM [dbo].[DATASEPT] 
                      GROUP BY [ID NUMBER] 
                      HAVING COUNT([PERSALNO]) > 1
                     );

However, I would expression this more typically using window functions: 但是,我通常使用窗口函数来表达这一点:

select t.*
from (select t.*, count(*) over (partition by persalno) as cnt
      from DATASEPT002 t
     ) t
where cnt > 1;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM