2014-11-03 78 views
0

參加如果我有2個表,這兩個具有相同的列ord排序列從每個表

表-A

id | value | ord 
1 | asd | 1 
2 | dfg | 5 
3 | ghj | 7 

表-B

id | value | ord 
1 | zxc | 3 
2 | cvb | 4 
3 | bnm | 6 

我如何加入他們得到這個結果

| id | value | ord | id | value | ord 
| 1 | asd | 1 | - | - | - 
| - | - | - | 1 | zxc | 3 
| - | - | - | 2 | cvb | 4 
| 2 | dfg | 5 | - | - | - 
| - | - | - | 1 | bnm | 6 
| 3 | ghj | 7 | - | - | - 

或者如果我不能讓空列更好。

基本上我想要問的是,如果我能加入基於從2個表列的表和排序所有的結果,在這個例子中ord

當我嘗試

SELECT * FROM table_a JOIN table_b ORDER BY ord 

我得到領域模棱兩可的錯誤。

回答

1
SELECT a.id a_id 
    , a.value a_value 
    , a.ord a_ord 
    , NULL b_id 
    , NULL b_value 
    , NULL b_ord 
    FROM table_a a 
UNION 
SELECT NULL 
    , NULL 
    , NULL 
    , b.* 
    FROM table_b b 
ORDER 
    BY COALESCE(b_ord,a_ord) 
+0

#1064 - 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第6行'.ord b_ord FROM table_a a UNION SELECT NULL,NULL,NULL'使用正確的語法 – 2014-11-03 10:30:26

+0

Oops fixed - (您可以自己解決這個問題! ) – Strawberry 2014-11-03 10:31:24

+0

是的,還有一個小小的錯誤,但它工作,真棒!謝謝! – 2014-11-03 10:32:34