当列 xID 和 ID 的值等于时,我需要在同一个MySQL表上更新行。
这是一个例子:
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 Update查询但未成功,因为 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
如何解决这个问题?
你能帮助我吗?
提前感谢您的帮助,非常感谢。
答案 0 :(得分:0)
您需要自我加入,例如
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)
答案 1 :(得分:0)
使用 JOIN
(自我加入)更新表,并使用 WHERE
子句检查列Euro
是否为{空。
<强>查询强>
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;
注意:有多条行符合条件。