我在SQL中有三个表,我需要将它们合并为一个。我需要一个表中所有表中的所有字段。所有表格包含三个不同年份的相同字段。我写了一个代码:
CREATE TABLE COL_TBL_TRAINING_ALL_YEARS AS(
SELECT
COL_TBL_2010_TRN_RESULTS_new.*,
COL_TBL_TRN_RESULTS_GEMS_2011.*,
COL_TBL_TRN_RESULTS_GEMS_2012.*
FROM COL_TBL_2010_TRN_RESULTS_new,
COL_TBL_TRN_RESULTS_GEMS_2011,
COL_TBL_TRN_RESULTS_GEMS_2012
WHERE COL_TBL_2010_TRN_RESULTS_new.SYS_EMP_ID_NR = COL_TBL_TRN_RESULTS_GEMS_2011.SYS_EMP_ID_NR = COL_TBL_TRN_RESULTS_GEMS_2012.SYS_EMP_ID_NR)
我在'AS'错误附近找到了错误的语法,并且'='
附近的语法不正确我已经阅读了我的SQL书籍,似乎无法找到解决方法,我们将非常感谢任何帮助。
答案 0 :(得分:7)
你需要做两步:
使用UNION ALL
,就像提到的那样。但如果缺少某列,则应对该列使用NULL
。
您应该将结果插入新表格中。
所以看起来应该是这样的:
SELECT *
INTO yournewtablename
FROM (SELECT col1,
col2,
col3
FROM col_tbl_2010_trn_results_new
UNION ALL
SELECT col1,
col2,
col3
FROM col_tbl_trn_results_gems_2011
UNION ALL
SELECT col1,
col2,
NULL AS Col3
FROM col_tbl_trn_results_gems_2012) n
以下是展示的示例:SQL FIDDLE
答案 1 :(得分:1)
你需要UNION ALL:
SELECT * FROM COL_TBL_2010_TRN_RESULTS_new UNION ALL
SELECT * FROM COL_TBL_TRN_RESULTS_GEMS_2011 UNION ALL
SELECT * FROM COL_TBL_TRN_RESULTS_GEMS_2012
答案 2 :(得分:1)
假设您的子查询返回结果,您的语法基本上是正确的。您可能想尝试两件事:
根据this page,括号是必需的。