Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入到和全部插入到之间的差异_Sql_Oracle - Fatal编程技术网

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条重复记录,第一次查询将其删除。