【问题标题】:Simple Querying of a Table简单查询表
【发布时间】:2017-07-29 06:53:58
【问题描述】:

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

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;

【问题讨论】:

  • @Strawberry 我确实认为 SO 提供了足够多的信息来获得帮助,你不觉得吗?
  • @Stephen 如果我这么想,我真的不会发表评论。
  • @Strawberry 那么也许补充一下这篇文章可以改进的地方?样本数据check!,想要的输出check!,尝试check!
  • @Strawberry 这篇文章无论如何都不值得投反对票。要求很明确……但我会让你去做。神速

标签: mysql sql join unique where


【解决方案1】:

试试这个:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
相关资源
最近更新 更多