我假設,你的工資沒有正確地總結(你得到的比預期的要多)。這是因爲LEFT JOIN
將爲b
中沒有匹配的行保留NULL。 對於這個SQL:
SELECT a.*, b.*
FROM (select * from (SELECT 123 AS Salary,
'Tom' AS person
UNION
SELECT 343 AS Salary,
'Bob' AS person
UNION
SELECT 877 AS Salary,
'Tom' AS person) as t where t.Salary > 123) a
LEFT JOIN (SELECT *
FROM (SELECT 'Tom' AS person,
1 AS id
UNION
SELECT 'Bob' AS person,
2 AS id) AS t
WHERE t.id = 1) AS b
ON a.person = b.person
你會有這樣的輸出:

所以INNER JOIN
應該爲你工作。
SELECT SUM(SALARY) FROM (SELECT * FROM table1 WHERE id > 10) a
LEFT JOIN table2 b on a.person = b.person
哪個表是'salary'列中的? – 2014-09-12 12:04:59
它是table1列 – Wizard 2014-09-12 12:05:32
@TomMac它是onlny示例我neet有'salary_type'從table2並添加條件來只計算一些aslary類型。 – Wizard 2014-09-12 12:12:00