【发布时间】:2019-08-03 06:40:02
【问题描述】:
我有table1和table2(都有相同的列),如果table1中不存在table2中的所有记录,我想将它们插入table1,否则我想用table2的所有非NULL列更新table1的列。
我没有设法找到一种方法来生成一个可以同时做这两件事的 sql。 至于第一部分,我使用 INSERT OR IGNORE 进行管理。 第二部分是问题。
这就是我所拥有的:
UPDATE main.datas
SET ot=(
SELECT ot FROM cards.datas
WHERE main.datas.id = cards.datas.id AND cards.datas.ot <> NULL
);
问题是,由于cards.datas.ot NULL 部分,整个(SELECT ...)返回NULL。我尝试做cards.datas.ot IS NOT NULL,但它只是忽略它并设置NULL值。
【问题讨论】:
-
当您想与 NULL 进行比较时,不要使用 = 或 。使用
column IS NULL或column IS NOT NULL -
正如我所说,我已经这样做了。
-
你确定同一个id的cards.datas.ot不为空吗?
-
是的,我通过在 main.datas.ot 记录之一中设置一个数字来检查多次,同时在cards.datas.ot 上将相同的 id 设置为 NULL。它将 main 中的数字替换为卡片中的 NULL。