2013-10-28 100 views
12

我需要做一個這樣的查詢:SQLite的 - LEFT JOIN

SELECT table1.*, table2.column 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

但它不工作。如果我嘗試相同的查詢,但更換第一部分 - >

SELECT table1.column, table2.column 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

它工作正常。我需要將table1中的所有列。我怎樣才能做到這一點,而不是指定所有這些?

+0

什麼是錯誤?你是不是在兩個表中都有相同的列名? – kmas

+1

在生產中使用'SELECT *'或'SELECT table。*'是一個不好的習慣。考慮明確指定所有列。閱讀更多http://stackoverflow.com/questions/3639861/why-is-select-considered-harmful – peterm

+0

是的,它是相同的名稱。沒有錯誤,我得到所有table1列,但沒有我需要的列。這是真正的查詢 SELECT property。*,ubication.name FROM property LEFT JOIN ubication ON ubication.id = property.ubication –

回答

14

如果您有table1table2相同的列名,這裏是沒有指定的table1所有列名的解決方案:

SELECT table1.*, table2.column as my_column_name_no_in_table1 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

如果table1table2列名稱都不同,你可以使用:

SELECT table1.*, table2.* 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

但作爲peterm「的評論說,這是不是在生產中一個很好的做法。現在,按你的意願去做! ;)

+0

我仍然拿到和以前一樣的專欄! –

+0

請告訴我們錯誤...否則我們無法幫助您。 – kmas

+0

如果你需要更多的幫助,你也可以給我們表格結構。 – kmas