[英]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.