簡體   English   中英

將sql表內容從一個表復制到另一個表 - 有條件地

[英]Copying sql table contents from one table to another - conditionally

我有2代表positions -它包含一個字段名為“ tripnametrips -它包含了一個名為“字段name

我使用一個csv文件從中導入數據到這兩個表,現在我需要做一些進一步的更新,我有點卡住了。

通過添加csv文件中包含的行數來更新“ positions ”表。 一個場被稱為“ tripname ”(其中包含一個值)的另一個被稱為“ FK_Trips_ID ”(其被添加作為NULL)。

' trips '表只更新了一行(如果它還不存在),其中包含一個名為'name'的字段和另一個名為'ID'的字段。

這是我被困的地方。 我需要:

Insert into the 'positions.FK_Trips_ID' field the value of the 'trips.ID'
where the 'trips.name' is equal to the 'positions.tripname
- BUT only if 'positions.FK_Trips_ID' is NULL

我找不到這種類型插入的類似例子,並想知道某種靈魂是否能指出我正確的方向。

我想你的意思是UPDATEFK_Trips_ID從表positions基於對匹配的記錄trips表。

您可以將兩個表連接到數據庫上只有一個請求,

UPDATE  positions a
        INNER JOIN trips b
            ON a.tripname = b.name
SET     a.FK_Trips_ID = b.ID
WHERE   a.FK_Trips_ID IS NULL

為了更快地執行UPDATE語句,列必須是索引以避免執行全表掃描 ,這會導致在大型數據庫上執行此操作時速度變慢。

ALTER TABLE positions ADD INDEX (tripname);
ALTER TABLE trips ADD INDEX (name);

暫無
暫無

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

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