如何使用子查询从计数语句中列出?

How to use sub query to list from a count statement?

我们在 TOTEMP table 中有一些员工有重复的 CIVILID,现在我想找到他们的名字与 EMP table

我尝试了以下查询

SELECT P.FIRSTNAME,ID
FROM EMP p
where  exists (SELECT CIVILID, COUNT (CIVILID)
               FROM TOTEMP AS D
               group by CIVILID
               HAVING (COUNT (CIVILID) >1) ) 

Selects all the records from the EMP table

2 ) 我尝试了 IN 语句

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) ) 

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

此致

SELECT p.FIRSTNAME,p.ID,d.CIVILID
    FROM EMP p inner join TOTEMP d
    on p.id = d.id
    where  d.CIVILID in (select CIVILID from TOTEMP
                        group by CIVILID having count(ID)>1 );

希望对您有所帮助!

这可以通过 existsin 运算符来完成,但是您的两个查询都有问题。

exists 变体缺少 pd 之间的关系:

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)

in 变体只需要 select 内部查询中的 id,而不是多列(并且不需要与 udfemp 交叉连接) :

SELECT p.firstname, p.id
FROM   emp p
where  p.id in (SELECT   civilid
                FROM     totemp
                GROUP BY civilid
                HAVING   COUNT(civilid) > 1)