比较两个表的数据,将常用数据存储在第三个表中,否则存储在第四个表中

时间:2014-03-05 06:06:47

标签: mysql sql postgresql stored-procedures

我有四张表具有相同的结构。假设他们有一个列名。我需要检查table1的列name中是否存在table2列名称中的值。

如果存在,我需要在name的{​​{1}}列中插入此名称,在table3的{​​{1}}列中插入。

1 个答案:

答案 0 :(得分:0)

假设INSERT和Postgres ......
我会使用data-modifying CTE(Postgrs 9.1+),其中一个SELECT和两个INSERT

WITH cte AS (
   SELECT t1.name, t2.name IS NULL AS t2_missing
   FROM   table1 t1
   LEFT   JOIN table2 USING (name)
   )
, ins AS (
   INSERT INTO table3 (name)
   SELECT name FROM cte WHERE NOT t2_missing
   )
INSERT INTO table4 (name)
SELECT name FROM cte WHERE t2_missing;

在MySQL中也是不可能的(没有CTE,更不用说可写的CTE)。