Многократное условие, используя оператор "И" и возвращает точно совпадающие строки из одной таблицы, используя 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() в идентификаторах игр обоих разделов, и добавил динамический подзапрос для каждого идентификатора.