2013-10-28 86 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