我有一张叫做“居民”的桌子,里面有住在不同公寓楼的居民的信息。这就是从这个表中选择所有值的样子-

SELECT * FROM RESIDENTS;

 aptid   | aptnum          | ssn
---------+-----------------+----------------
     100 |               1 |      641072301
     100 |               2 |      699021306
     100 |               3 |      699021306
     100 |               1 |      699021306
     200 |               1 |      132429609
     200 |               1 |      641072301
     300 |               1 |      641072301

我想选择所有在不同综合楼租住三套以上公寓的居民的社保号码。因此,例如,ssn为“641072301”的住户将显示在查询中,因为此人在复杂ID 100、200、300中租出至少三个单元,而社会ID为“699021306”的住户将不会显示,因为即使他们租出三个不同的公寓,但他们都在同一个单元(ApID)内。所以这个案子的结果是-
 ssn
---------+
641072301

(1 row)

这就是我所拥有的,但它不能给我我想要的-
SELECT r1.ssn
  FROM Residents r1
     , Residents r2
 WHERE r1.aptID <> r2.apt.ID;

最佳答案

试试这个:

SELECT ssn
FROM Residents
GROUP BY ssn
HAVING COUNT(DISTINCT aptid) >= 3

关于mysql - 简单查询表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42675849/

10-12 17:25