我有类似以下的查询
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的情况下重写此查询。 感谢
答案 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谓词,但仅限于在子查询中选择的列是主键或唯一键的情况。否则,您将从联接中获得重复的结果。
所以更一般的答案(不假设.MatchStrictly
是currency_id
的PK)将添加一个不同的子查询来删除可能的重复:
currency_master