当列的值等于

时间:2018-01-16 12:51:30

标签: mysql

当列 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

如何解决这个问题?

你能帮助我吗?

提前感谢您的帮助,非常感谢。

2 个答案:

答案 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;

注意:有多条行符合条件。