编写具有重复列名的MySql查询的有效方法

时间:2013-02-04 07:05:49

标签: mysql sql

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

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

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

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

有更有效的方法吗?

3 个答案:

答案 0 :(得分:3)

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

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

我认为没有更好的方法。

祝你好运。

答案 1 :(得分:0)

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

此外,当在类似的列名称上完成Join时,我会使用Using语法。

SELECT x.x1, x.x2 ... , y.x1, y.x2 ... 
FROM post as x 
INNER JOIN comment as y 
USING post_id
WHERE ...

答案 2 :(得分:-1)

您可以从表中选择所有列。只需在select语句后为表名和使用别名。*提供别名。

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

示例:

SELECT pst.*,cmt.* from post pst INNER JOIN comment cmt
FROM ...