我有两张桌子:
tbl1 table
user_id amount
1 100
1 200
tbl2 table
user_id amount
1 900
1 800
我需要获得"金额的"此表中的列为某些user_id。
我可以通过2个查询来完成:
SELECT SUM(amount) AS sum1 FROM tbl1 WHERE user_id = 1
SELECT SUM(amount) AS sum2 FROM tbl2 WHERE user_id = 1
如何在1个查询中执行此操作?
输出应为:
sum1 sum2
300 1700
答案 0 :(得分:1)
这是一种方法:
SELECT (SELECT SUM(amount) AS sum1 FROM tbl1 WHERE user_id = 1) as amount1,
(SELECT SUM(amount) AS sum2 FROM tbl2 WHERE user_id = 1) as amount2;
如果您想为多个用户有效地执行此操作,您可以执行以下操作:
SELECT (SELECT SUM(amount) FROM tbl1 t WHERE t.user_id = u.user_id) as amount1,
(SELECT SUM(amount) FROM tbl2 t WHERE t.user_id = u.user_id) as amount2
FROM (SELECT 1 as user_id UNION ALL
SELECT 2 as user_id
) u
如果您在tbl1(user_id, amount)
和tbl2(user_id, amount)
上有索引,那么这将非常有效。