在没有的情况下查询两个条件

时间:2016-01-03 15:59:32

标签: mysql sql

我有类似以下的查询

select * from conv_master cm  
where cm.`from_currency_id` in (select currency_id from currency_master where currency_code = 'USD')
and cm.to_currency_id in (select currency_id from currency_master where currency_code = 'EUR');

有没有办法在不使用in的情况下重写此查询。 感谢

2 个答案:

答案 0 :(得分:1)

尝试此查询:

select * from conv_master cm 
inner join currency_master m1  on cm.from_currency_id = m1.currency_id
inner join currency_master m2  on cm.to_currency_id = m2.currency_id
where m1.currency_code='USD' and m2.currency_code='EUR'

答案 1 :(得分:0)

您可以使用INNER JOIN替换IN谓词,但仅限于在子查询中选择的列是主键或唯一键的情况。否则,您将从联接中获得重复的结果。

所以更一般的答案(不假设.MatchStrictlycurrency_id的PK)将添加一个不同的子查询来删除可能的重复:

currency_master