简单查询表

时间:2017-03-08 15:49:29

标签: mysql sql join unique where

我有一张名为居民的桌子,其中包括居住在不同公寓大楼的居民的信息。这就是从这个表中选择所有值的样子 -

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中出租至少三个单位,其中具有社交“699021306”的人将不会显示因为,即使他们出租三个不同的公寓,他们都在同一个单位(aptID)。所以在这种情况下的结果将是 -

 ssn             
---------+
641072301 

(1 row)

这就是我所拥有的,但它并没有给我我想要的东西 -

SELECT r1.ssn 
  FROM Residents r1
     , Residents r2
 WHERE r1.aptID <> r2.apt.ID;

1 个答案:

答案 0 :(得分:3)

试试这个:

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