2013-11-22 84 views
0

考慮我有以下兩個表(草圖):MySQL的順序按時間在兩個不同的表

表1:

  • t1Id(智力,主鍵)
  • 時間(日期時間)
  • ATTRIBUTE1
  • attribute2
  • attribute3

表2:

  • T2ID(智力,主鍵)
  • 時間(日期時間)
  • attribute4
  • attribute5

假設我要選擇兩個表中的結果並按time排序,這是可行的嗎?我自己認爲這是可能的,如果:

  • 您可以創建一個聯合與兩個表的所有列,但time共享通過聯合。
  • NULL這是不匹配的地方的值。例如,該聯合中的表1的一行在t2Id,attribute4和attribute5中將具有NULL
  • 一個額外的列表明原始行(沒有NULL值的行)源自哪個表。

我該如何以最有效的方式設計這樣的查詢?

+0

我會這樣做,就像你提到:UNION與ORDER BY時間。額外的列取決於你。如果你想讓某件事從它的來源中知道。 –

+0

'UNION' +'ORDER BY'有什麼問題?如果你想把你的結果作爲一個集合,你應該做到這一點。至於'NULL'-s:澄清他們的錯誤:對於union,所有的表必須有相同的列數 –

回答

1
SELECT * FROM (
    SELECT t1Id,time , attribute1,attribute2,attribute3 FROM table1 
    UNION ALL 
    SELECT t2Id ,time , attribute3,attribute4,"" FROM table2 
)AA 
ORDER BY AA.time 
+0

,這看起來不太實際。你不知道哪個是哪個。至少在告訴他們是否來自table1或table2之後放置一列 –

相關問題