Sql 插入到和全部插入到之间的差异
当我在表中插入一些记录时,我发现Sql 插入到和全部插入到之间的差异,sql,oracle,Sql,Oracle,当我在表中插入一些记录时,我发现 INSERT INTO T_CANDYBAR_DATA SELECT CONSUMER_ID,CANDYBAR_NAME,SURVEY_YEAR,GENDER,1 AS STAT_TYPE,OVERALL_RATING FROM CANDYBAR_CONSUMPTION_DATA UNION SELECT CONSUMER_ID,CANDYBAR_NAME,SURVEY_YEAR,GENDER,2 AS STAT_TYPE,NUMBER_
INSERT INTO T_CANDYBAR_DATA
SELECT CONSUMER_ID,CANDYBAR_NAME,SURVEY_YEAR,GENDER,1 AS STAT_TYPE,OVERALL_RATING
FROM CANDYBAR_CONSUMPTION_DATA
UNION
SELECT CONSUMER_ID,CANDYBAR_NAME,SURVEY_YEAR,GENDER,2 AS STAT_TYPE,NUMBER_BARS_CONSUMED
FROM CANDYBAR_CONSUMPTION_DATA;
79行插入。
INSERT ALL
INTO t_candybar_data VALUES (consumer_id,candybar_name,survey_year,gender,1,overall_rating)
INTO t_candybar_data VALUES (consumer_id,candybar_name,survey_year,gender,2,number_bars_consumed)
SELECT * FROM candybar_consumption_data
86行插入。
INSERT ALL
INTO t_candybar_data VALUES (consumer_id,candybar_name,survey_year,gender,1,overall_rating)
INTO t_candybar_data VALUES (consumer_id,candybar_name,survey_year,gender,2,number_bars_consumed)
SELECT * FROM candybar_consumption_data
我在某个地方读到,
自动将所有插入到
联合中,那么为什么会出现这些差异。问题是您的查询不同,第一个查询使用的是联合
,第二个查询没有,因此它们自然会插入不同数量的值。与直接插入相比,全部插入
:
可用于将新记录插入到一个表中INSERT
可用于根据查询条件将新记录插入到多个表中INSERT ALL
然后自动将所有内容插入
为什么这些差异正在显现
这是不正确的<代码>全部插入与联合
没有任何关系。但也就是说,你可能弄错了
SQL UNION ALL运算符用于组合2或2的结果集
更多SELECT语句。它返回查询中的所有行(即使
该行存在于多个SELECT语句中)
UNION中的每个SELECT语句都必须具有相同的编号
结果集中具有相似数据类型的字段数
UNION将从结果集中消除重复记录,而INSERT ALL则不会。共有7条重复记录,第一次查询将其删除。