Многократное условие, используя оператор «И» и возвращает точно совпадающие строки из одной таблицы, используя MySQL - PullRequest
0 голосов
/ 10 декабря 2018

enter image description here

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]

enter image description here

1 Ответ

0 голосов
/ 11 декабря 2018

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

...