MySQL с использованием курсора

0

У меня есть таблица 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.

Пожалуйста, дайте мне знать, если это требует объяснения.

  • 1
    Сгруппируйте по TypeID , ValueId качестве предложения IN и найдите различное число 2.
Теги:

2 ответа

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;
  • 0
    Возможно, еще один вопрос здесь ...
  • 0
    Если бы я хотел создать новую таблицу в MySQL с 3 столбцами (так же, как и в предыдущей таблице), в которой будут храниться результаты. Как мне выбрать TypeID, PropertyID, ValueID, поскольку я хочу группировать только по TypeID?
0

Вы можете использовать следующий запрос для извлечения записей

select TypeID from table where ValueID=736 or ValueID=628
    group by TypeID
    having count(distinct ValueID) > 1;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню