2013-04-05 168 views
0

我有以下几点:SQL左外由左表列连接顺序,但保留所有行

SELECT 
table1.id 
FROM 
table1 
LEFT OUTER JOIN table2 ON table2.table1_id = table1.id 
WHERE 
(table1.entry_id=2) 
AND 
parent_id=0 
ORDER BY 
SUM(table2.column1) - SUM(table2.column2) 

正常工作,直到我“借命令”加,我需要它来得到表1的所有相关行,即使它们在table2中有不匹配的行,排序也会将它们放在底部。

回答

0

试试这个:

SELECT 
    t1.id 
FROM table1 AS t1 
LEFT OUTER JOIN 
(
    SELECT table1_id, SUM(column1) sum1, SUM(column2) sum2 
    FROM table2 
    GROUP BY table1_id 
) AS t2 ON t2.table1_id = t.id 
     AND t1.entry_id = 2 
     AND t1.parent_id = 0 
ORDER BY t2.sum1 - t2.sum2; 
+0

令人惊讶的是快速反应,谢谢。 – wot 2013-04-05 11:26:48

+0

@ user2248223 - 不客气:) – 2013-04-05 11:35:06