当表B中的日期不存在时,我试图将表A中的日期插入表B.我使用了NOT EXISTS函数,但日期似乎没有像我希望的那样填充。
为了给出额外的背景,表B是一个总帐,它可以在一天内有零个或多个交易,而表A是一个资产负债表,每天有一个条目,无论总帐中是否有交易。
这是我使用的SQL代码:
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
)
答案 0 :(得分:0)
你遗漏了NOT EXISTS
部分内的条件:
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 :(得分:0)
如果您的AccountId
列是唯一的。然后,您可以使用下面的sql
INSERT IGNORE INTO gl_account_type_descriptions (`Account ID`,Company_Name, `Date`)
SELECT DISTINCT `Account ID`,Company_Name, `Date` FROM all_balance_sheet;