1

我正在运行 MySQL 5.1.61,我的 MyISAM 表设置为

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

1 回答 1

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

于 2012-06-06T22:02:39.940 回答