Многократное условие, используя оператор "И" и возвращает точно совпадающие строки из одной таблицы, используя MySQL

select 
  games_exchange.u_exchange_id 
from 
  games_exchange 
where  
  ( games_exchange.game_id = 7 
  AND games_exchange.exchange_type = 1 )
  AND (
  games_exchange.game_id = 7 
  AND games_exchange.exchange_type = 2 )
group by 
  games_exchange.u_exchange_id 
HAVING 
  COUNT( games_exchange.u_exchange_id ) = 2

Мой ожидаемый результат от вышеупомянутого запроса - u_exchange_id = 171. Но вышеупомянутый запрос возвращает u_exchange_id = 171 & 170.

[скриншот для таблицы здесь][2]

1 ответ

Решение

После долгих исследований я нашел решение своей проблемы. На самом деле я использовал условие where в неправильном порядке с наличием предложения.Предлагаемое решение для моей проблемы приведено ниже в коде

SELECT u_exchange_id FROM games_exchange 
WHERE 
u_exchange_id IN 
( SELECT u_exchange_id FROM games_exchange WHERE game_id = 7 AND 
exchange_type = 1 )
AND 
u_exchange_id IN 
( SELECT u_exchange_id FROM games_exchange WHERE game_id = 7 AND 
exchange_type = 2)
GROUP BY u_exchange_id 
HAVING COUNT( u_exchange_id ) = 2

Примечание: я достиг этого, используя foreach() в идентификаторах игр обоих разделов, и добавил динамический подзапрос для каждого идентификатора.

Другие вопросы по тегам