我有三张桌子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命令。
答案 0 :(得分:2)
您可以在一个声明中使用INSERT OR REPLACE
和SELECT
。试试这个:
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
- 值的占位符,?2
- 表名和?3
- new_value_c 强>