我正在运行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列?我只想要一个专栏,因为无论如何他们都会有相同的价值。
另请注意,我可能会添加更多表格,例如“视频”,“网址”,因此不仅仅是这两个表。
谢谢。
答案 0 :(得分: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