gpt4 book ai didi

mysql - 根据mysql中的条件连接更新记录

转载 作者:行者123 更新时间:2023-11-29 10:06:06 25 4
gpt4 key购买 nike

我有 2 张 table

utr_details

utr | utr_amt |match_flag(default 0)
1 |10 |0
1 |20 |0
1 |20 |0
2 |30 |0
2 |20 |0
2 |10 |0

export_data
utr | utr_sum_amt
1 | 50
2 | 100

正如您在上面所看到的,utr 1 的 utr_details 表中的 utr_amt 总和为 50,等于导出 export_data 中针对 utr 1 的 utr_sum_amt。但是两个表中utr 2 的总和不相等。我的任务是将 match_flag 的值更新为 1,其中两个表中的总和相等。在这种情况下,对于表 utr_details 中的 utr 1,match_flag 将为 1。请帮我生成一个 mysql 查询。是否可以在单个查询中实现此目的?

最佳答案

也许这里的查询比严格必要的要多,但你明白了......

DROP TABLE IF EXISTS utr_details;

CREATE TABLE utr_details
(id SERIAL PRIMARY KEY
,utr INT NOT NULL
,utr_amt INT NOT NULL
,match_flag TINYINT NOT NULL DEFAULT 0
);

INSERT INTO utr_details VALUES
(1,1,10,0),
(2,1,20,0),
(3,1,20,0),
(4,2,30,0),
(5,2,20,0),
(6,2,10,0);

DROP TABLE IF EXISTS export_data;

CREATE TABLE export_data
(utr INT NOT NULL PRIMARY KEY
,utr_sum_amt INT NOT NULL
);

INSERT INTO export_data VALUES
(1, 50),
(2,100);

UPDATE utr_details a
JOIN
( SELECT x.utr
FROM
( SELECT utr
, SUM(utr_amt) utr_sum_amt
FROM utr_details
GROUP
BY utr
) x
JOIN export_data y
ON y.utr = x.utr
AND y.utr_sum_amt = x.utr_sum_amt
) b
ON b.utr = a.utr
SET match_flag = 1;
Query OK, 3 rows affected (0.05 sec)

SELECT * FROM utr_details;
+----+-----+---------+------------+
| id | utr | utr_amt | match_flag |
+----+-----+---------+------------+
| 1 | 1 | 10 | 1 |
| 2 | 1 | 20 | 1 |
| 3 | 1 | 20 | 1 |
| 4 | 2 | 30 | 0 |
| 5 | 2 | 20 | 0 |
| 6 | 2 | 10 | 0 |
+----+-----+---------+------------+

关于mysql - 根据mysql中的条件连接更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51875343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com