簡體   English   中英

如何更新table1值(從table2中選擇),其中table1.email = table2.email

[英]how do I update table1 values (select from table2) where table1.email = table2.email

我試圖將一些數據從一個表復制到另一個電子郵件地址相同的表。

例如:

表1包含以下字段:
email, title, first_name, last_name, (+ others)

表2具有以下字段:
email, title, first_name, last_name, modified, (+ others)

我要復制的titlefirst_namelast_nametable2table1 ,其中table1.email = table2.email

因此, table2保存所有的數據,我想復制到table1 ,其中在電子郵件table1的匹配FIRST 'most recent (by 'modified')' email foundtable2 (因此最近修改datetime )。

我正在嘗試這樣的事情:

INSERT INTO `table1` (title, first_name, last_name)
    SELECT title, first_name, last_name from `table2`
    WHERE table1.email = table2.email

ERROR: Unknown column 'table1.email' in 'where clause'

因此,基本上,我需要在一條語句中添加類似的內容。

SELECT EMAIL as `originalEmail` FROM `table1` 
    SELECT title, first_name, last_name FROM `table2` 
    WHERE table2.email = table1.email
    ORDER BY `modified` desc # Get the most recently modified
    LIMIT 1                  # limit to 1 result (the most recent one)
UPDATE `table1` (title, first_name, last_name) values (*values from above*)
WHERE EMAIL = `originalEmail`

編輯-我想UPDATE而不是INSERT新記錄。

試試這個查詢-

UPDATE `table1` t1
  JOIN `table2` t2
    ON t1.email = t2.email
SET
  t1.title = t2.title,
  t1.first_name = t2.first_name,
  t1.last_name = t2.last_name

最新條件查詢table2記錄-

UPDATE `table1` t1
  JOIN (SELECT * FROM `table2` GROUP BY email ORDER BY modified DESC) t2
    ON t1.email = t2.email
SET
  t1.title = t2.title,
  t1.first_name = t2.first_name,
  t1.last_name = t2.last_name

暫無
暫無

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

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