首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果MySQL中不存在一个表中的行,则将这些行插入另一个表中

如果MySQL中不存在一个表中的行,则将这些行插入另一个表中
EN

Stack Overflow用户
提问于 2016-08-27 09:54:29
回答 2查看 62关注 0票数 0

我正在尝试将一个日期从表A插入到表B中,而该日期在表B中尚不存在。我使用了not EXISTS函数,但日期似乎并未按我所希望的那样填充。

为了给出更多的上下文,表B是一个总帐,它可以在一天中有零个或多个交易,表A是一个资产负债表,每天有一个分录,而不管总帐中是否有交易。

下面是我使用的SQL代码:

代码语言:javascript
复制
INSERT INTO gl_account_type_descriptions 
  (Company_Name, `Account ID`, `Date`)
SELECT Company_Name,
       `Account ID`,
       `Date`
FROM all_balance_sheet
WHERE NOT EXISTS (
  SELECT DISTINCT Company_Name, Account ID`, `Date`
  FROM gl_account_type_descriptions
  )
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-27 10:34:25

NOT EXISTS部件中缺少条件:

代码语言:javascript
复制
INSERT INTO gl_account_type_descriptions 
  (Company_Name, `Account ID`, `Date`)
SELECT Company_Name, `Account ID`, `Date`
FROM all_balance_sheet AS bal
WHERE NOT EXISTS (
  SELECT Company_Name, `Account ID`, `Date`
  FROM gl_account_type_descriptions AS acc
  WHERE bal.Company_name = acc.Company_name
    AND bal.`Account ID` = acc.`Account ID`
    AND bal.`Date` = acc.`Date`
  )

我还删除了多余的DISTINCT子句,因为它不是必需的,并且会减慢查询速度。

票数 1
EN

Stack Overflow用户

发布于 2016-08-27 10:43:33

如果您的AccountId列是唯一的。然后,您可以使用下面的sql

代码语言:javascript
复制
INSERT IGNORE INTO gl_account_type_descriptions (`Account ID`,Company_Name, `Date`)
SELECT DISTINCT `Account ID`,Company_Name, `Date` FROM all_balance_sheet;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39176737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档