[英]Copying sql table contents from one table to another - conditionally
我有2代表positions
-它包含一個字段名為“ tripname
” trips
-它包含了一個名為“字段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
我找不到這種類型插入的類似例子,並想知道某種靈魂是否能指出我正確的方向。
我想你的意思是UPDATE
列FK_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.