MySQL更新查询

标签 mysql database sql-update

我需要一些关于这个 MySQL 更新的帮助

我有如下三个表格。

tbl1
id eid quantity
1 3      2
2 4      3

tbl2
tid eid qnty status type
 1  3    1      1         1
 2  3    0      1         0
 3  4    1      1         1
 4  4    0      1         0

tbl3
id tid type 
1  1   1
2  2   0
3  3   1
4  4   0

我需要更新 sql 到:

找到 X

找到 Y

如果 X - Y > 0,则将 tbl2 中的状态更新为 0

X = tbl1.quantity - sum(tbl2.qnty) where tbl1.eid = tbl2.eid AND type = 1

换句话说:

X = tbl1.quantity in that eid - sum(tbl2.qnty) in that eid WHERE type = 1

因此 eid 4 的 X = 2 和 eid 3 的 X = 1

Y = SELECT COUNT(tbl3.id) FROM tbl3 WHERE tbl2.tid = tbl3.tid AND type = 0 GROUP BY tid

因此 tid 2 = 1 和 tid 4 = 1

如果 X - Y > 0,则将 tble2 中的状态更新为 0

最终结果将是 tbl2.tid:4 的状态将更新为 0,因为 2 - 1 = 1

感谢您的贡献。

最佳答案

我现在不能检查它,所以我不能 100% 确定语法,但我认为你可以这样做:

更新表2 在 tbl1.eid = tbl2.eid 上加入 tbl1 在 tbl2.tid = tbl3 上加入 tbl3 设置状态=0 其中 tbl2.type=1 和 tbl1.quantity - sum(tbl2.qnty) - (select count(tbl3.id) FROM tbl3 WHERE tbl2.tid = tbl3.tid AND type = 0 GROUP BY tid) > 0

关于MySQL更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4259754/

相关文章:

mysql - 数据透视表的外键和约束,删除级联

php - gae 本地环境未运行 WordPress 最新版本,仅适用于 3.5.1

mysql - 如何更新第三行中的列与 MySQL 中第二行中的列相同?

Php PDO 没有更新,不知道为什么

MySql 将嵌套的 SELECT IN 查询转换为 JOIN

mysql - 我有一个Sum(),其中a.name = b.name,我想选择最高的Sum() : How?的名称

mysql - MySQL 中 MIN 列值和 CHAR 列上的 SELECT 非常慢

java - 在另一个方法中使用时,无法解析 JComponent 名称

php - 无法导入magento数据库

java.sql.SQLException : Invalid use of group function 异常