Sql 如何使用子查询从count语句中列出?
我们在TOTEMP表中有一些员工具有重复的CIVILID,现在我想从EMP表中查找他们的姓名匹配 我尝试了以下查询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) )
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)