[英]mysql update field with value from another field in same table
I have a table like this: 我有一张这样的桌子:
----------------------------------
| 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 |
----------------------------------
and I would like that become by single query like this: 我希望通过单个查询变成这样:
----------------------------------------
| 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 |
----------------------------------------
The date to get will be always "type C" and the field to update will be always the same id of the date and "type A" or "type B" 获取日期将始终为“ type C”,而要更新的字段将始终为日期的相同ID,且为“ type A”或“ type B”
Any suggest? 有什么建议吗?
You could use an updated joined on subselect 您可以在子选择上使用更新的联接
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.