Sql 查找具有多个不同列值的记录

Sql 查找具有多个不同列值的记录,sql,sqlite,Sql,Sqlite,给定带有列Id文本、主键和位置文本的表t1,如下所示 +-------+-----------+ | Id | place | +-------+-----------+ | abcde | Santori | | bcdef | Krypt | | cdefg | Bali | | defgh | Bangkok | | abcde | Colombo | +-------+-----------+ 我需要找出具有多个不同位置的ID的记录。在上述示

给定带有列Id文本、主键和位置文本的表t1,如下所示

+-------+-----------+
|  Id   |   place   |
+-------+-----------+
| abcde |  Santori  |
| bcdef |  Krypt    |
| cdefg |  Bali     |
| defgh |  Bangkok  |
| abcde |  Colombo  |
+-------+-----------+
我需要找出具有多个不同位置的ID的记录。在上述示例中,输出应为

+-------+-----------+
|  Id   |   place   |
+-------+-----------+
| abcde |  Santori  |
| abcde |  Colombo  |
+-------+-----------+

我认为你可以:

SELECT ID, PLACE FROM T1 as A 
WHERE A.ID IN 
(SELECT ID FROM T1 AS B 
GROUP BY ID 
HAVING count(*) > 1
)

我认为你可以:

SELECT ID, PLACE FROM T1 as A 
WHERE A.ID IN 
(SELECT ID FROM T1 AS B 
GROUP BY ID 
HAVING count(*) > 1
)
我将使用:

我将使用:


在子查询中,您需要获取不同位置的计数和ID,然后使用外部查询获取所有记录


在子查询中,您需要获取不同位置的计数和ID,然后使用外部查询获取所有记录


到目前为止,您是否尝试过任何方法来解决此问题?如果id的值重复,则id不能是主键。到目前为止,您尝试过任何方法来解决此问题吗?如果id的值重复,则id不能是主键。
select * From T1
where T1.ID in
(select ID from T1
 group by ID
having count(distinct PLACE) > 1
)