我假设ID在
你的桌子
表A,但两者都可能丢失。如果它总是存在于表中
a
,您可以使用
LEFT JOIN
而不是
UNION
.
SELECT COALESCE(SUM(marks), 0)
FROM
(
SELECT marks FROM a WHERE id = 45
UNION ALL
SELECT SUM(evaluation_marks) AS marks FROM b WHERE id = 45
) x
编辑
如果表A中有所有用户,则使用
SELECT a.marks + COALESCE( SUM( b.evaluation_marks ), 0 )
FROM a
LEFT OUTER JOIN b ON ( b.id = a.id )
WHERE a.id = 45
GROUP BY a.id, a.marks
不过,您应该考虑更改您的表模型。你为什么把名字和身份证存两次?你不能这样做吗?
id name marks evaluation marks
=======================================
12 Ram 87 0
23 John 67 12
45 Mark 45 34
78 Chris 0 9
98 Nancy 0 10