gpt4 book ai didi

SQLite:如果存在则更新或使用来自不同表的选择进行插入

转载 作者:行者123 更新时间:2023-12-03 17:07:30 25 4
gpt4 key购买 nike

我有三个表 A、B 和 C。

A:
----------------
index_a | value
----------------

B:
----------------
index_b | value
----------------

C:
----------------------------
index_c | table_name | value_c
----------------------------

现在用户给我值,表名和new_value_c。表名可以是 A 或 B,值是表 A 或 B 的相应值。现在如果给定表中存在匹配给定值的记录,我们将获取该表的索引(index_a 或 index_b)并尝试将其插入表 C如果不存在具有该索引和表名的记录,否则我们将更新 new_value_c。如果没有记录匹配值和表名,那么我们什么都不做。

我知道我们可以使用一个 SELECT 来获取表 A 或 B 的索引,然后使用 INSERT OR REPLACE INTO 表 C。我想知道它是否可以在单个sql命令。

最佳答案

您可以使用 INSERT OR REPLACESELECT 在一条语句中。试试这个:

INSERT OR REPLACE INTO C (index_c, table_name, value_c)
SELECT index_a, 'A', ?3 FROM A WHERE value = ?1 AND 'A' = ?2
UNION
SELECT index_b, 'B', ?3 FROM B WHERE value = ?1 AND 'B' = ?2

有:?1 - value 的占位符,?2 - 表名? 3 - new_value_c

关于SQLite:如果存在则更新或使用来自不同表的选择进行插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32579605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com