1

我有一个相当简单的 MySQL 查询,如下所示:

SELECT * 
FROM post INNER JOIN comment ON post.post_id = comment.post_id
WHERE post.host = 99999
ORDER BY post.post_id

我的问题是我的一些列名对于帖子和评论表都是通用的。结果,列名仅出现一次,其值取自查询中的最后一个表(即注释表)。

我意识到我可以SELECT在查询部分显式列出每个列名,并使用别名来区分重复的列名,但是每个表中有很多列,会很混乱。

有没有更有效的方法来解决它?

4

3 回答 3

3

您应该只为那些相似的列使用别名,然后为其余列使用 *:

SELECT post.post_id, comment.post_id as comment_post_id, *
FROM ...

我不认为有更好的方法。

祝你好运。

于 2013-02-04T07:08:06.573 回答
0

只要可行,列出列名总是更好的方法,它可能会给 MySQL 优化器一些提示。

此外,当对相似的列名进行连接时,我会使用 Using 语法。

SELECT x.x1, x.x2 ... , y.x1, y.x2 ... 
FROM post as x 
INNER JOIN comment as y 
USING post_id
WHERE ...
于 2013-02-04T08:27:26.720 回答
-1

您可以从两个表中选择所有列。只需在选择语句后为表名和使用别名都指定一个别名。*。

然后它将从表中选择所有列。

例子:

SELECT pst.*,cmt.* from post pst INNER JOIN comment cmt
FROM ...
于 2013-02-04T07:16:04.333 回答