как извлекать данные на основе и условия

#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. Я перечитал ваш вопрос и думаю, что неправильно понял, что вы имели в виду.