簡體   English   中英

MySQL更新字段與來自同一表中另一個字段的值

[英]mysql update field with value from another field in same table

我有一張這樣的桌子:

----------------------------------
| id | date1      | date2 | type |
----------------------------------
| 1  | NULL       | NULL  | A    |
| 1  | NULL       | NULL  | B    |
| 1  | NULL       | NULL  | A    |
| 1  | NULL       | NULL  | A    |
| 1  | 2016-08-02 | NULL  | C    |
| 1  | NULL       | NULL  | B    |
| 2  | NULL       | NULL  | A    |
| 2  | NULL       | NULL  | A    |
| 2  | NULL       | NULL  | A    |
| 2  | NULL       | NULL  | B    |
| 2  | 2016-08-15 | NULL  | C    |
| 2  | NULL       | NULL  | B    |
----------------------------------

我希望通過單個查詢變成這樣:

----------------------------------------
| id | date1      | date2       | type |
----------------------------------------
| 1  | NULL       | 2016-08-02  | A    |
| 1  | NULL       | 2016-08-02  | B    |
| 1  | NULL       | 2016-08-02  | A    |
| 1  | NULL       | 2016-08-02  | A    |
| 1  | 2016-08-02 | NULL        | C    |
| 1  | NULL       | 2016-08-02  | B    |
| 2  | NULL       | 2016-08-15  | A    |
| 2  | NULL       | 2016-08-15  | A    |
| 2  | NULL       | 2016-08-15  | A    |
| 2  | NULL       | 2016-08-15  | B    |
| 2  | 2016-08-15 | NULL        | C    |
| 2  | NULL       | 2016-08-15  | B    |
----------------------------------------

獲取日期將始終為“ type C”,而要更新的字段將始終為日期的相同ID,且為“ type A”或“ type B”

有什么建議嗎?

您可以在子選擇上使用更新的聯接

 update my_table 
 inner join  ( select id, date1 from my_table where type ='C') t2
 on my_table.id = t2.id
 set date2 = t2.date1
 where type in ('A','B')
UPDATE myTable t1
SET date2 = (SELECT MAX(date1)
             FROM myTable t2 
             WHERE t2.id = t1.id)
WHERE t1.type <> 'C'

暫無
暫無

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

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