我有一个包含3列的MySQL表,这些列的名称如下:TypeID
,PropertyID
,ValueID
。
让我们说该表具有以下行:
| TypeID | PropertyID | ValueID |
| 45 | 266 | 736 |
| 46 | 266 | 736 |
| 50 | 266 | 736 |
| 52 | 266 | 736 |
| 50 | 229 | 628 |
| 52 | 229 | 628 |
当ValueID分别匹配736和628时,我正在寻找TypeID。50和52都是这种情况。
请让我知道是否需要进一步说明。
答案 0 :(得分:4)
您想要GROUP BY
:
select TypeID
from table t
where ValueID in (736, 628)
group by TypeID
having count(*) = 2;
如果您有重复的ValueID
,则需要COUNT(DISTINCT ValueID)
。
如果要查看所有列,则可以执行JOIN
:
select t.*
from table t inner join
(select TypeID
from table t
where ValueID in (736, 628)
group by TypeID
having count(*) = 2
) tt
on tt.TypeID = t.TypeID;
答案 1 :(得分:0)
您可以使用以下查询来获取记录
select TypeID from table where ValueID=736 or ValueID=628
group by TypeID
having count(distinct ValueID) > 1;