如何在MYSQL中选择多个插入后进行插入
UNION
会移除重复的记录(即结果中所有列都相同的记录),UNION ALL
则不会。
使用UNION
代替UNION ALL
会有一定的性能损失,因为数据库服务器需要执行额外的工作以移除重复行,但通常情况下你不需要重复记录(特别是在开发报表时)。
为了标识重复记录,记录必须是可比较类型以及相容类型。这将取决于SQL系统。例如,系统可能会截断所有长文本字段以生成可比较的短文本字段(MS Jet),或者可能拒绝比较二进制字段(ORACLE)。
UNION示例:
SELECT 'foo' AS bar UNION SELECT 'foo' AS bar
结果:
+-----+ | bar | +-----+ | foo | +-----+ 1 row in set (0.00 sec)
UNION ALL示例:
SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar
结果:
+-----+ | bar | +-----+ | foo | | foo | +-----+ 2 rows in set (0.00 sec)