У меня есть таблица MySQL, которая содержит 3 столбца, столбцы имеют следующие TypeID
: TypeID
, PropertyID
, ValueID
.
Пусть говорят, что таблица имеет следующие строки:
| TypeID | PropertyID | ValueID |
| 45 | 266 | 736 |
| 46 | 266 | 736 |
| 50 | 266 | 736 |
| 52 | 266 | 736 |
| 50 | 229 | 628 |
| 52 | 229 | 628 |
Я ищу, чтобы выбрать TypeID, когда ValueID соответствует как 736, так и 628, что подходит как для 50, так и для 52.
Пожалуйста, дайте мне знать, если это требует объяснения.
Вы хотите 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;
Вы можете использовать следующий запрос для извлечения записей
select TypeID from table where ValueID=736 or ValueID=628
group by TypeID
having count(distinct ValueID) > 1;
TypeID
,ValueId
качестве предложения IN и найдите различное число 2.