【问题标题】:insert data from 3 tables with the same fields into 1 table将具有相同字段的 3 个表中的数据插入到 1 个表中
【发布时间】:2015-06-10 11:34:30
【问题描述】:

我有 3 张桌子(accntjobcostservic15)。都具有相同的字段(codejnovendate)。我需要在一个查询中将这些表中的数据插入到另一个名为 dummy 的具有相同字段的表中。我该怎么做?

我使用了 3 个单独的插入语句,如下所示:但我需要在一个语句中使用它:

INSERT INTO dbo.dummy
SELECT
dbo.jobcost.code,
dbo.jobcost.ven,
dbo.jobcost.date,
dbo.jobcost.jno,
FROM 
dbo.jobcost
WHERE
dbo.jobcost.jno > '40000'

INSERT INTO dbo.dummy
SELECT
dbo.servic15.code,
dbo.servic15.ven,
dbo.servic15.date,
dbo.servic15.jno
FROM 
dbo.servic15
WHERE

dbo.servic15.jno > '40000'

INSERT INTO dbo.dummy
SELECT
dbo.accnt.code,
dbo.accnt.ven,
dbo.accnt.date,
dbo.accnt.jno
FROM 
dbo.accnt
WHERE
dbo.jobcost.jno > '40000'

【问题讨论】:

  • 发布您尝试过的内容。

标签: mysql sql insert insert-into


【解决方案1】:

你需要INSERT ... SELECT声明

INSERT INTO dummy  (code, jno, ven, date)
  SELECT code, jno, ven, date FROM accnt jno > '40000'
  UNION ALL
  SELECT code, jno, ven, date FROM jobcost jno > '40000'
  UNION ALL
  SELECT code, jno, ven, date FROM servic15 jno > '40000';

如果尚未创建表,请使用CREATE TABLE ... SELECT

【讨论】:

  • 当我这样做时,它告诉我:使用 UNION、INTERSECT 或 EXCEPT 运算符组合的所有查询必须在其目标列表中具有相同数量的表达式。这可能是因为 accnt 有一个名为“imported”的额外字段,我不想插入到新表中?
  • @samhatcher 您的表格结构不同,请尝试编辑答案
  • 好的,成功了。现在我如何告诉它只记录 jno > 40000
【解决方案2】:
INSERT INTO dummy  (code, invno, ven, invdate, amon, accno, amnt, jno, saccno, ckno)
  SELECT code, invno, ven, invdate, amon, accno, amnt, jno, saccno, ckno FROM accnt 
  WHERE jno > '40000'
  UNION ALL
  SELECT code, invno, ven, invdate, amon, accno, amnt, jno, saccno, ckno FROM jobcost 
  WHERE jno > '40000'
  UNION ALL
  SELECT code, invno, ven, invdate, amon, accno, amnt, jno, saccno, ckno FROM servic15 
  WHERE jno > '40000';

成功了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-26
    • 2016-06-30
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 2020-03-11
    • 1970-01-01
    相关资源
    最近更新 更多