2012-03-29 2 views
1

У меня есть таблица с идентификаторами и значениями. они уникальны вместе.mysql правильно построить запрос select

ID VALUE 
1 value1 
1 value2 
2 value1 
3 value2 
3 value3 
3 value4 
4 value3 
5 value1 

Предположим, я заданные значения "значение2" и "Value3", я хочу, чтобы выбрать идентификатор, который соответствует ОБА этих значений (то есть. 3)

Я могу

SELECT ID FROM table WHERE VALUE IN("value2", "value3") 

Однако он возвращает значения, соответствующие одному. Есть ли способ запросить ТОЛЬКО те, которые соответствуют обеим этим значениям?

+1

что ужасное название. –

ответ

1

Вы должны использовать GROUP BY с HAVING

SELECT ID FROM table WHERE VALUE IN("value2", "value3") GROUP BY ID HAVING COUNT(*) = 2 
+0

хороший. только то, что мне нужно – nick

1

Попробуйте следующее:

SELECT id FROM table WHERE value = "value2" and id in (SELECT id FROM table WHERE value = "value3") 
1
SELECT t1.id FROM table AS t1 JOIN table AS t2 ON t1.id=t2.id 
    WHERE t1.value="value2" AND t2.value="value3" 
Смежные вопросы