我在名为PROD
的表中有此数据
| Project | Position | Status |
|---------|----------|--------|
| 1 | 1 | A |
| 1 | 2 | A |
| 2 | 1 | A |
| 2 | 2 | B |
| 3 | 1 | B |
| 3 | 2 | B |
| 4 | 1 | A |
| 4 | 2 | A |
我正在尝试使用Projects
获取所有至少具有一个Position
的{{1}}。
Status = B
我已经尝试过使用| Project | Position | Status |
|---------|----------|--------|
| 2 | 1 | A |
| 2 | 2 | B |
| 3 | 1 | B |
| 3 | 2 | B |
:
JOIN
这给了我一个空洞的答复。
答案 0 :(得分:2)
使用login
:
EXISTS
或使用SELECT p.* FROM PROD p
WHERE EXISTS (
SELECT 1 FROM PROD
WHERE Project = p.Project AND Status = 'B'
)
:
IN
如果要使用SELECT * FROM PROD
WHERE Project IN (SELECT Project FROM PROD WHERE Status = 'B')
解决方案:
JOIN
请参见demo。
结果:
SELECT DISTINCT p.*
FROM PROD p JOIN PROD pp
ON pp.Project = p.Project
WHERE pp.Status = 'B'
答案 1 :(得分:0)
您可以尝试在子查询中使用联接
select * from PROD
INNER JOIN (
select distinct project
from PROD
where status ='B';
) t on t.project = PROD.project
答案 2 :(得分:0)
我正在尝试获取所有状态至少为B的项目。
无需加入,只需执行以下操作:
SELECT DISTINCT PROD.Project WHERE PROD.Status ='B'