sme*_*lin 2 sql postgresql select postgresql-9.1
我有一个表3列:id,val1和val2.
对于val2的每个不同值,我想选择存在多个不同val1值的所有行.
例:
| id | val1 | val2 |
|------------------|
| 1 | A1 | a2 |
| 2 | A1 | a2 |
| 3 | A1 | b2 |
| 4 | B1 | b2 |
| 5 | A1 | c2 |
| 6 | A1 | c2 |
| 7 | A1 | c2 |
| 8 | A1 | d2 |
| 9 | C1 | d2 |
| 10 | A1 | d2 |
Run Code Online (Sandbox Code Playgroud)
期望的结果:
| id | val1 | val2 |
|------------------|
| 3 | A1 | b2 |
| 4 | B1 | b2 |
| 8 | A1 | d2 |
| 9 | C1 | d2 |
| 10 | A1 | d2 |
Run Code Online (Sandbox Code Playgroud)
我没有设法提出任何允许我这样做的查询,也许其他人对如何解决这个问题有了一个想法.
您可以使用having子句搜索val2多个不同的值val1.例如:
select yt.*
from YourTable yt
join (
select val2
from YourTable
group by
val2
having count(distinct val1) > 1
) as filter
on yt.val2 = filter.val2
Run Code Online (Sandbox Code Playgroud)