Sql 如何使用子查询从count语句中列出?

Sql 如何使用子查询从count语句中列出?,sql,count,subquery,sql-server-2014,exists,Sql,Count,Subquery,Sql Server 2014,Exists,我们在TOTEMP表中有一些员工具有重复的CIVILID,现在我想从EMP表中查找他们的姓名匹配 我尝试了以下查询 SELECT P.FIRSTNAME,ID FROM EMP p where exists (SELECT CIVILID, COUNT (CIVILID) FROM TOTEMP AS D group by CIVILID HAVING (COUNT (CIVILID) >1) )

我们在TOTEMP表中有一些员工具有重复的CIVILID,现在我想从EMP表中查找他们的姓名匹配

我尝试了以下查询

SELECT P.FIRSTNAME,ID
FROM EMP p
where  exists (SELECT CIVILID, COUNT (CIVILID)
               FROM TOTEMP AS D
               group by CIVILID
               HAVING (COUNT (CIVILID) >1) ) 
从EMP表中选择所有记录

2)我在声明中尝试了

SELECT P.FIRSTNAME,p.ID
FROM EMP p ,UDFEMP  k
where  p.ID in (SELECT CIVILID ,COUNT (CIVILID)
                FROM TOTEMP AS D
                group by CIVILID
                HAVING (COUNT (CIVILID) >1) ) 
选择时,只能在选择列表中指定一个表达式 子查询不随EXISTS一起引入

问候


希望有帮助

这可以通过
exists
in
操作符来完成,但两个查询都有问题

存在
变量缺少
p
d
之间的关系:

SELECT p.firstname, p.id
FROM   emp p
WHERE  EXISTS (SELECT   *
               FROM     totemp d
               WHERE    p.id = d.civilid -- Here!
               GROUP BY civilid
               HAVING   COUNT(civilid) > 1)
变量中的
只需在内部查询中选择
id
,而不是多列(并且不需要与
udfemp
交叉连接):


EXISTS查询需要一个相关子查询。IN查询需要一个只有一列CIVILID的sub-select。请提供示例数据或使用已定义的架构创建SqlFIDLE?这将非常有帮助,并使问题的解决变得容易。@Harshil,更新了问题。该语句仅列出一条记录,多次编辑查询。检查它。这次它返回emp表中的第一条记录。请在问题中添加模式和示例数据。我不知道如何共享它,exists返回了一个错误,nvarchar值“260110101612”的转换溢出了一个int列。in语句仅从emp表返回一条记录,分别是
p.id
d.civilid
不同的数据类型?是的,civilid是nvarchar。我的id列与这两个表匹配
SELECT p.firstname, p.id
FROM   emp p
WHERE  EXISTS (SELECT   *
               FROM     totemp d
               WHERE    p.id = d.civilid -- Here!
               GROUP BY civilid
               HAVING   COUNT(civilid) > 1)
SELECT p.firstname, p.id
FROM   emp p
where  p.id in (SELECT   civilid
                FROM     totemp
                GROUP BY civilid
                HAVING   COUNT(civilid) > 1)