kor*_*esh 4 php mysql sql-match-all
PID VALUE
3 1
4 3
1 9
1 3
Run Code Online (Sandbox Code Playgroud)
如何选择同时具有值3和9的行?我试过了
从表中选择PID,其中VALUE = 3且VALUE = 9
所以我得到类似下面的东西,而不是我得到一个空集.
PID
1
Run Code Online (Sandbox Code Playgroud)
PID 4不应包含在结果中,因为它没有VALUE 9
WHERE子句只能评估对条件一个在同一时间从一个给定的表行.您不能使条件跨越多行.
但是,您可以使用自联接将同一个表中的多个行匹配到结果集的一行中,这样您就可以应用同时涉及两者的条件.
SELECT t1.pid
FROM table t1 JOIN table t2 ON t1.pid=t2.pid
WHERE t1.value = 3 AND t2.value = 9;
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是使用GROUP BY并计算不同的值:
SELECT t.pid
FROM table t
WHERE t.value IN (3,9)
GROUP BY t.pid
HAVING COUNT(DISTINCT t.value) = 2;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
670 次 |
| 最近记录: |