我正在尝试自学,并更好地理解UNION的替代方法,并发现何时可以使用联接。
当我在玩这个游戏时,如果没有UNION,我似乎无法获得想要的东西。是否可以在单个查询中编写此代码?
SELECT DISTINCT a.id FROM table1 a, table2 b WHERE a.id = b.id AND a.ind IS NULL AND b.year >= '2017' AND b.code IN ('01','02','03') AND b.flag NOT IN ('F','L') UNION SELECT DISTINCT a.id FROM table1 a, table3 c WHERE a.id = c.id AND a.ind IS NULL AND c.area = 'MAIN' AND SYSDATE >= c.start
在此先感谢您的指导或帮助。
SELECT DISTINCT a.id FROM table1 a LEFT JOIN table2 b on b.id = a.id AND b.year >= '2017' AND b.code IN ('01', '02', '03') AND b.flag NOT IN ('F', 'L') LEFT JOIN table3 c ON a.id = c.id and c.area = 'MAIN' and SYSDATE >= c.start WHERE a.ind IS NULL AND ( b.id IS NOT NULL or c.id IS NOT NULL)
这是旧的过时A,B连接语法真正表明它的年龄的事情之一,当您有一些条件必须在特定ON子句中使用而其他条件必须在该WHERE子句中使用时。以这种方式编写此查询将非常困难,以后更难以阅读和理解。更好地 总是 写出完整的INNER JOIN,LEFT JOIN等等。
A,B
ON
WHERE
INNER JOIN
LEFT JOIN