当列、xID、和ID的值相等时,我需要在相同的表中更新行。
这是一个例子:
mysql> SELECT
Euro,
ALMACEN,
Imagen,
xID,
ID
FROM
`tbl_g`
WHERE
xID IN (2025)
OR ID IN (2025);
+--------+----------+--------+------+------+
| Euro | ALMACEN | Imagen | xID | ID |
+--------+----------+--------+------+------+
| 7742,8 | ARGUALAS | NULL | NULL | 2025 |
| NULL | EMPALME | | 2025 | 4441 |
+--------+----------+--------+------+------+
2 rows in set我尝试了这个SQL查询,但没有成功,因为带有xID号2025的行没有用ID 2025年的值进行更新:
mysql> UPDATE `tbl_g` kkk,
`tbl_g` jjj
SET kkk.Euro = jjj.Euro
WHERE
kkk.ID = jjj.xID
AND kkk.xID IS NOT NULL;
Query OK, 0 rows affected
Rows matched: 0 Changed: 0 Warnings: 0如何解决这个问题?
你能帮帮我吗?
提前感谢您的帮助,真的很感激。
发布于 2018-01-16 13:01:24
使用JOIN (自联接)更新表,并使用WHERE子句检查列Euro为null。
查询
update `tbl_g` as `t1`
join `tbl_g` as `t2`
on `t1`.`xID` = `t2`.`ID`
set `t1`.`Euro` = `t2`.`Euro`
where `t1`.`Euro` is null;注意:有一个满足条件的多行的机会。
发布于 2018-01-16 13:01:10
例如,您需要一个自连接
drop table if exists t;
create table t(Euro decimal(10,2) , ALMACEN varchar(20), Imagen int, xID int, ID int);
insert into t values
( 7742.80 , 'ARGUALAS' , NULL , NULL , 2025),
( NULL , 'EMPALME' , null , 2025 , 4441);
update t t1 join t t2 on t2.xid = t1.id
set t2.euro = t1.euro;
select * from t;
MariaDB [sandbox]> select * from t;
+---------+----------+--------+------+------+
| Euro | ALMACEN | Imagen | xID | ID |
+---------+----------+--------+------+------+
| 7742.80 | ARGUALAS | NULL | NULL | 2025 |
| 7742.80 | EMPALME | NULL | 2025 | 4441 |
+---------+----------+--------+------+------+
2 rows in set (0.00 sec)https://stackoverflow.com/questions/48281730
复制相似问题