Mysql - Выберите на основе многократных условий ряда

Скажем, у меня есть это:

|ID | Val |  
+---+-----+  
| 1 |  10 |  
| 1 |  20 |  
| 1 |  30 |  
| 2 |  10 |  
| 2 |  20 |  
| 3 |  20 |  
| 3 |  30 |  
+---+-----+  

И я должен выбрать только те ID, у которых есть и 10 и 30 ценностей. Так, на английском языке дайте мне ID, у которого есть и 10 и 30 ценностей. Как я сделал бы это?

2
nl ja de

2 ответы

Вы будете использовать что-то вроде этого:

select id
from yourtable
where val in (10, 30)
group by id
having count(distinct val) =2

See SQL Fiddle with Demo

6
добавлено
SELECT DISTINCT `ID` FROM tablename WHERE `VAL` IN ('10','30');
0
добавлено
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw