簡體   English   中英

根據視圖和另一個表中的值在表中插入值

[英]Insert values in a table based on values from a view and another table

我有 2 個表和一個具有這種結構的視圖(所有列都是字符串):

first_table -> 1 column
second_table -> 3 columns
view -> 1 column

在所有這些中,我都有一個名為 system 的列。第一個表沒有像視圖那樣的最新系統。 所以我想做的是將視圖中尚未插入表中的所有系統插入到 first_table 中,並忽略第二個表中的系統。

例子:

Fist Table :     View:         Second table:

System 1         System 1      System 2 
                 System 2      System 3
                 System 3
                 System 4
                 System 5 

我希望 first_table 看起來像這樣:

System 1
System 4
System 5 

直到現在我嘗試過這樣的事情:

INSERT ignore INTO first_table
SELECT SYSTEM
  FROM view
where System !="" GROUP BY System

和另一個:

INSERT ignore INTO first_table
    SELECT System
        FROM view
        WHERE System !="" GROUP BY System  and  NOT EXISTS (SELECT System
                              FROM view)

您使用NOT EXISTS走在正確的軌道上。 但是你必須關聯子查詢(對於哪個系統,沒有行必須存在?)並使用其中兩個,每個表一個。

INSERT INTO `first table`
            (system)
            SELECT v.system
                   FROM `view` v
                   WHERE NOT EXISTS (SELECT *
                                            FROM `first table` t1
                                            WHERE t1.system = v.system)
                         AND NOT EXISTS (SELECT *
                                                FROM `second table` t2
                                                WHERE t2.system = v.system);

數據庫<>小提琴

你可以在這個SQL 小提琴上試試

SELECT TFinal.S 
FROM (
 SELECT S FROM T3 WHERE S NOT IN (SELECT S FROM T2) 
) AS TFinal
WHERE TFinal.S NOT IN (SELECT S FROM T1); 

嘗試類似下面的內容。 這個想法是在 T2 和 T1 上做聯合,在 T3 上做減號。 請注意,這僅供參考。 根據需要重寫:

INSERT INTO T1  select S from T3 where T3.S NOT IN (SELECT S from T2 UNION select S from T1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM