2012-06-06 58 views
1

我運行MySQL 61年1月5日,我的MyISAM表被設置爲如何選擇具有不同列,除了一個ID

objects: 
id | owner | created_date 
--------------------------------- 
1 | xxx | xxxxxxxx 
2 | xxx | xxxxxxxx 

photos: 
id | width | height | url 
------------------------- 
2 | 800 | 480 | http://somewhere.com/photo.jpeg 

posts: 
id | message 
------------ 
1 | Hello, world! 
2 | Goodbye! 

表我想是這樣

SELECT * FROM objects LEFT JOIN posts ON objects.id=posts.id LEFT JOIN photos ON objects.id=photos.id 

但運行這個查詢給我

id | owner | created_date | id | message | id | width | height | url 
---------------------------------------------------------------------- 
1 | xxx | xxxxxxxx  | 1 | Hell... | NULL | NULL | NULL | NULL 
2 | xxx | xxxxxxxx  | 2 | Good... | 2 | 800 | 480 | http://som.... 

這是我想要的,除了重複的id列。

簡而言之,我想要的所有列都是單調乏味的,但只有一次,我該如何擺脫那些重複的id列?我只想要一列,因爲它們都將具有相同的值。

另請注意,我可能會添加更多的表格,例如'video','url',所以它不只是這兩個表格。

謝謝。

回答

4

缺乏拼寫出我想要的所有列這將是乏味的,但只有一次,我怎麼能擺脫那些重複的id列?

應該明確地列出列。

你可以做你想要USING什麼,但我還是建議不要使用SELECT *

SELECT * 
FROM objects 
LEFT JOIN posts USING (id) 
LEFT JOIN photos USING (id) 

結果:

ID OWNER CREATED_DATE MESSAGE   WIDTH HEIGHT URL 
1 xxx  xxxxxxxx  Hello, world! (null) (null) (null) 
2 xxx  xxxxxxxx  Goodbye!  800  480  http://somewhere.com/photo.jpeg 

看到它聯機工作:sqlfiddle

+0

我m仍然是原型,所以我一直在尋找一個「骯髒」的解決方案,USING正是我所期待的。在製作過程中,我絕對同意我會指定我想要的每一列。 –

+0

我會添加一個註釋,如果其他列的名稱沒有區分,請記住添加一個表名或別名,如:'SELECT t1.id,t1.col1,t2.col1 FROM table1 t1 LEFT JOIN table2 t2 ...'。 – ManieQ

相關問題