2013-08-27 68 views
0

我試圖從FROM中的子查詢中加入不同的ID到具有相同ID但非重複的表上,因爲它們重複以創建整個實體。如何做到這一點?我所有的嘗試在非獨特id表中連續達到單個ID。在非獨特ID(MySql)上加入唯一標識

例如:現在

Table 1 
ID val_string val_int val_datetime 
1  null   3435   null 
1  bla   null   null 
1  null   null   2013-08-27 
2  null   428   null 
2  blob   null   null 
2  null   null   2013-08-30 
etc. etc. etc. 

Virtual "v_table" from SubQuery 
ID 
1 
2 

,如果我創建的線沿線的查詢:

SELECT t.ID, t.val_string, t.val_int, t.val_datetime 
FROM table1 AS t 
    JOIN (subquery) AS v_table 
     ON t.ID = v_table.ID 

我得到的結果是:

Result Table: 
ID val_string val_int val_datetime 
1  null   3436  null 
2  null   428  null 

我想什麼基於這個例子來看整個表1。 (實際查詢有更多參數,但這是我堅持的問題)。

我該如何去確保從表1中的ID與虛擬表中的ID相匹配,從而獲得一切?

+1

你有TREID左加入? –

+0

val_int是如何從原始表中的3435更改爲結果中的3436的? – Barmar

+0

「更多的參數」是你的結果沒有任何具有非空val_string或val_datetime的行的原因嗎?當你把這些事情拋開時,很難說出你真的有什麼問題。 – Barmar

回答

1
SELECT t.ID, t.val_string, t.val_int, t.val_datetime 
FROM table1 AS t 
    LEFT JOIN (subquery) AS v_table 
     ON t.ID = v_table.ID 

Sample fiddle

+0

有沒有辦法加快表現在這種加入方式?我正在使用'LEFT JOIN'通過數據庫運行極其緩慢的性能。 – Nukeface

+0

爲此,您需要首先檢查子查詢。子查詢通常不被推薦,因爲它很慢。如果一個聯接可以替代一個子查詢,那將會很棒。還要將索引添加到where(id)內的字段。 –