2012-01-10 6 views
0

を注文私はセレクト2つのテーブルのレコードとそれらに

--TABLE A-- 
id  date   value 
1  09/01/2012 Reward 
2  09/01/2012 Purchase 
3  07/01/2012 Reward 
4  07/01/2012 Purchase 

--TABLE B-- 
id id_from_a  date   value 
1  1   10/01/2012  Generated Rewrd 
2  3   08/01/2012  Generated Reward 

今、私は

id  date   value 
1   10/01/2012 Generated Reward 
1   09/01/2012 Reward 
2   09/01/2012 Purchase 
3   08/01/2012 Generated Reward 
3   07/01/2012 Reward 
4   07/01/2012 Purchase 

の下に、私はUNIONSを使用して知るようになり、結果がマージされます、次のレコードを持つ2つのテーブルAとBを望んでいますこれらの2つのテーブルが、私は上記のようにそれを注文するのですか?

答えて

4

UNIONには、最後に指定された単一のORDER BY句を指定できます。これは、結合された結果セット全体に適用されます。

SELECT id, date, value 
    FROM table_A 
UNION 
SELECT id, date, value 
    FROM table_B 
ORDER BY id, date DESC 

UNION操作の重複除外機能が必要ない場合は、UNION ALLの方がパフォーマンスが向上します。

SELECT id, date, value 
    FROM table_A 
UNION ALL 
SELECT id, date, value 
    FROM table_B 
ORDER BY id, date DESC 
+0

を見て、労働組合の結果を注文することができます。つまり、ORDER BYのデフォルトはASCendingなので、降順にする場合はJoeのようにDESCを指定します。 – DOK

+0

tatは私のために働いた..それに感謝!! – Deepak

2

あなたはtable_atable_bからid_from_aからidを必要とするように見えます。あなたは、単にしかしORDER BY句でidを使用することができます。

SELECT 
id, date, value 
FROM table_a 
UNION ALL 
SELECT 
    id_from_a, date, value 
FROM table_b 
ORDER BY id, date DESC 
+0

そのマイケルに感謝!! – Deepak

2
(SELECT id, date, value FROM Table_A 
UNION ALL 
SELECT id, date, value FROM Tabble_B) 
ORDER BY id, date DESC 

あなたは安全のためUNION ALLを使用していることを確認してください。 UNION ALLはUNIONに、SELECT DISTINCTはSELECT ... UNION ALLは複製されたレコードのすべてのインスタンスを1つではなく表示します。

+0

Mr_Creosoteありがとう! – Deepak

関連する問題