mysql - T-sql 查询问题
问题描述
我有一个这样的查询
SELECT
a.ID,
b.ID,
a.Wallet,
b.Total
FROM
a
INNER JOIN b ON b.IID= a.ID
WHERE
b.ID= 19
AND b.IsActive = 1
我得到这个结果
a.ID b.ID Wallet Total
1 19 1000 250
1 19 1000 500
当我运行这个查询
UPDATE a
INNER JOIN b ON b.IID= a.ID
SET a.Wallet= a.Wallet+ b.Total
WHERE
b.ID= 19
AND b.IsActive = 1
我的 b 表钱包值从 1000 更新到 1250,但真正的结果将是 b 表钱包值从 1000 到 1750 我的失败在哪里?
****** 编辑 ******
表模式
CREATE TABLE IF NOT EXISTS `wallets` (
`wallet_id` int(6) unsigned NOT NULL,
`wallet` int(3) unsigned NOT NULL,
PRIMARY KEY (`wallet_id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `wallets` (`wallet_id`, `wallet`) VALUES
('1', '100'),
('2', '100');
CREATE TABLE IF NOT EXISTS `totals` (
`id` int(6) unsigned NOT NULL,
`TotalID` int(6) unsigned NOT NULL,
`wallet_id` int(6) unsigned NOT NULL,
`total` int(3) unsigned NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `totals` (`id`, `TotalID`,`wallet_id`,`total`) VALUES
('1', '19','1', '250'),
('2', '19','1', '750');
更新查询
UPDATE wallets inner join totals on totals.wallet_id=wallets.wallet_id
SET
wallets.wallet=wallets.wallet+totals.total
Where totals.TotalID=19
选择查询
SELECT * from wallets inner join totals on totals.wallet_id=wallets.wallet_id
解决方案
UPDATE a
SET wallet = wallet + b_sum
FROM a
CROSS APPLY
(
SELECT SUM(total) AS b_sum
FROM b
WHERE b.iid = a.id
AND b.id = 19
AND b.isActive = 1
) b
推荐阅读
- angular - 检测元素属性的变化
- javascript - 使用地图反应 setState 对象数组不起作用?
- laravel - 服务器上的 Laravel 共享太高
- c - 很难理解我们如何在这个给定的任务中 void printSp(int),
- python - Pandas 包含条件返回 True 但希望返回为 1 或 0 - 创建系列/数据框列
- oracle - java中的SQLcl错误:包oracle.jdbc.internal被密封
- php - Trying to echo an image in Php, cant find src
- javascript - 带有 webpack 的 react-redux 给出错误 Uncaught TypeError: Super expression must be null or a function, not undefined
- python - 使用 Pandas 进行基本矩阵计算
- sql - 由任务组成的任务的 ER 模型