UNION 和 UNION ALL 有什么区别?
UNION删除重复记录(结果中的所有列都相同),UNION ALL不删除。
UNION
UNION ALL
使用UNIONinstead of会降低性能UNION ALL,因为数据库服务器必须做额外的工作来删除重复的行,但通常您不希望出现重复的行(尤其是在开发报表时)。
要识别重复项,记录必须是可比较的类型以及兼容的类型。这将取决于 SQL 系统。例如,系统可能会截断所有长文本字段以制作短文本字段以进行比较(MS Jet),或者可能拒绝比较二进制字段(ORACLE)
SELECT 'foo' AS bar UNION SELECT 'foo' AS bar
结果:
+-----+ | bar | +-----+ | foo | +-----+ 1 row in set (0.00 sec)
SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar
+-----+ | bar | +-----+ | foo | | foo | +-----+ 2 rows in set (0.00 sec)