我正在尝试将一个日期从表A插入到表B中,而该日期在表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
)发布于 2016-08-27 10:34:25
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子句,因为它不是必需的,并且会减慢查询速度。
发布于 2016-08-27 10:43:33
如果您的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;https://stackoverflow.com/questions/39176737
复制相似问题