使用“and”运算符设置多个条件,并使用mysql从单个表返回完全匹配的行

vjhs03f7  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(339)

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\u exchange\u id=171。但是上面的查询返回u\u exchange\u id=171&170。
[表格截图在这里][2]

nwwlzxa7

nwwlzxa71#

经过大量研究,我想出了解决问题的办法。实际上,我在having子句中使用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

注意:我通过在两个部分的游戏id上使用foreach()实现了这一点,并为每个id动态添加了子查询。

相关问题