#mysql #sql-server
#mysql #sql-сервер
Вопрос:
Я пытаюсь получить все идентификаторы, значение которых равно hello amp; world. Поскольку у меня есть эта структура данных, как я могу получить эти данные?
id value
1 hello
1 world
2 hai
3 hello
3 world
Ожидаемый результат
id
1
3
Комментарии:
1. Можете ли вы отредактировать вопрос и добавить желаемый результат?
2. mysql или sql-сервер?
Ответ №1:
Вам нужно join
включить id
себя, чтобы проверить, id
есть hello
ли в world
столбце записи с таким же value
значением и.
Следующий запрос выдаст вам желаемый результат.
select t1.id
from @table t1
inner join @table t2
on t1.id = t2.id
where t1.value = 'hello'
and t2.value = 'world'
Вывод
----
| id |
----
| 1 |
----
| 3 |
----
Ответ №2:
SELECT id FROM tablename WHERE value = 'hello' OR value = 'world'
или уникальные идентификаторы
SELECT id FROM tablename WHERE value = 'hello' OR value = 'world' GROUP BY id
Другой вариант, но я уверен, что это не очень эффективно.
SELECT * FROM (SELECT id,GROUP_CONCAT(VALUE) AS concatvalues FROM testtable GROUP BY id) mytable2 WHERE concatvalues LIKE '%hello%' AND concatvalues LIKE '%world%'
Комментарии:
1. Я не думаю, что это работает! поскольку данные имеют идентификатор: формат значения
2. @terry Я изменил свой ответ на основе вашего ожидаемого результата. Возможно, вы захотите добавить ГРУППУ ПО идентификатору
3. Как это может быть ИЛИ условие? Мне нужны все идентификаторы со значениями hello и world
4. Я перечитал ваш вопрос и думаю, что неправильно понял, что вы имели в виду.