【问题标题】:Compare data of two tables, store common data in a third, else in fourth table比较两个表的数据,共同的数据存储在第三个,否则存储在第四个表
【发布时间】:2014-03-05 06:06:47
【问题描述】:

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

如果存在,我需要在table3name 列中插入此名称,否则在table4name 列中。

【问题讨论】:

  • 插入还是更新? MySQL 还是 Postgres?

标签: mysql sql postgresql stored-procedures


【解决方案1】:

假设 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)。

【讨论】:

    猜你喜欢
    • 2019-05-06
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多