вопрос sql в записи

0

Я получаю проблему в записи, используя следующий запрос

SELECT user_id FROM temp 
  WHERE 
    (value = 1 AND field_id = 11) AND 
    value = 1 AND field_id = 12

Вот таблица. Изображение 174551

Я должен получить запись 101 user_id.

Любая идея по этому поводу?

  • 1
    Пожалуйста, не используйте картинки для публикации текста. Вместо этого преобразуйте его в текст.
  • 1
    Вы имели в виду OR вместо AND . В настоящее время вы фильтруете для field_id=11 and field_id=12 .
Показать ещё 1 комментарий
Теги:
mysqli
subquery

3 ответа

0
Лучший ответ

Вам необходимо агрегировать по пользователю:

SELECT user_id
FROM temp
GROUP BY user_id
HAVING
    SUM(CASE WHEN value = 1 AND field_id = 11 THEN 1 ELSE 0 END) > 0 AND
    SUM(CASE WHEN value = 1 AND field_id = 12 THEN 1 ELSE 0 END) > 0;
0

Вы также можете использовать where:

select user_id
from table t
where value = 1 and field_id in (11, 12)
group by user_id
having count(distinct field_id) = 2;
0

попробуйте этот sql выбрать DISTINCT user_id из temp, где value = 1 и (field_id = 12 или field_id = 11)

  • 0
    Пожалуйста, отредактируйте свой ответ. Отформатируйте код как код и опишите, что он делает.
  • 0
    В столбце значений он не будет отображаться всегда 1. Его можно изменить для каждого условия, например field_id = 12 и value = 2

Ещё вопросы

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