UPDATE tb_user SET user_level = user_level - 100 WHERE id IN (SELECT id FROM tb_levels WHERE factor = 10);
tb_user:
-----------------
id | user_level
-----------------
1 | 1000
2 | 1500
3 | 3000
4 | 2500
-----------------
tb_levels:
-----------------
id | factor
-----------------
1 | 10
1 | 10
2 | 10
2 | 10
3 | 12
5 | 20
-----------------
我认为tb_user中的结果应该是:
-----------------
id | user_level
-----------------
1 | 800
2 | 1300
但它是:
-----------------
id | user_level
-----------------
1 | 900
2 | 1400
如何对结果800和1200执行查询?感谢。
答案 0 :(得分:0)
您需要计算另一个表中出现的id的次数。试试这个:
Negative scores:
-30 -50 -70 -40
Positive scores:
30 50 70 40
答案 1 :(得分:0)
这样的事情。使用JOIN
。
UPDATE tb_user u
JOIN (SELECT id, count(*) AS c FROM tb_levels WHERE factor = 10 GROUP BY id) i ON u.id = i.id
SET user_level = user_level - 100 * i.c