我有很多像这样的SQL查询:
SELECT o.Id, o.attrib1, o.attrib2
FROM table1 o
WHERE o.Id IN (
SELECT DISTINCT Id
FROM table1
, table2
, table3
WHERE ...
)
这些查询需要在不同的数据库引擎(MySql、Oracle、DB2、MS-Sql、Hypersonic)上运行,因此我只能使用通用的 SQL 语法。
在这里我看到,使用 MySql 的
IN
语句没有被优化,速度非常慢,所以我想把它改成 JOIN
。
我尝试了:
SELECT o.Id, o.attrib1, o.attrib2
FROM table1 o, table2, table3
WHERE ...
但这并不考虑 DISTINCT
关键字。
问题:如何使用 JOIN
方法消除重复行?