在MySQL中,我有一个简单的"SELECT * FROM foo"
查询。我想JOIN
表'bar',但是:
bar
id
的{{1}}列,因为它会与bar
id
列冲突
醇>
我知道我可以使用foo
语句来避免名称冲突,但我不想让事情复杂化。有没有办法编写此查询而不从as
命名我想要的每一列?
换句话说,我可以说'给我foo
中的所有列以及foo
中的这一列吗?
有人指出bar
通常是不好的做法,因为:
答案 0 :(得分:10)
SELECT foo.*, bar.whatever FROM ...
但请注意,这被视为不良做法。您应该始终按照预期的顺序命名所有列。
答案 1 :(得分:3)
在SQL Server中,您可以执行以下操作:
SELECT foo.*, bar.column FROM ...
我相信它也可以在MYSQL中完成。
答案 2 :(得分:1)
写
SELECT foo.*, bar.id
FROM foo
JOIN bar
ON …
答案 3 :(得分:1)
如果您想使用JOIN执行此操作,可以使用以下语法:
SELECT b.column_you_want,f。*
来自foo f
内部连接栏b
ON f.id = b.id
请注意,b和f分别是bar和foo的昵称。 INNER JOIN是Alex Brasetvik答案的较长版本。我用它是因为你特意说你想把桌子连在一起。它也比短格式更通用,因为你可以使用LEFT JOIN或RIGHT JOIN(更多信息:http://dev.mysql.com/doc/refman/5.0/en/join.html)。您还可以通过多种方式连接多个表,如果您需要来自多个源(表)的相关数据,这非常有用。希望这有帮助!
答案 4 :(得分:0)
select f.id, b.* from foo f,bar b
答案 5 :(得分:0)
SELECT x.*, y.specific
FROM x
JOIN y on x.id = y.id
...