编写具有重复列名的MySql查询的有效方法
我有一个相当简单的MySQL查询,如下所示:编写具有重复列名的MySql查询的有效方法,mysql,sql,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部分显式列出每个列名,并使用别名来区分重复的列名
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
部分显式列出每个列名,并使用别名来区分重复的列名,但是每个表中都有很多列,这会很混乱
有没有更有效的方法呢?对于那些相似的列,您应该使用别名,然后对于其余的列,使用*别名:
SELECT post.post_id, comment.post_id as comment_post_id, *
FROM ...
我认为没有更好的办法
祝您好运。您可以从这两个表中选择所有列。只需在select语句之后为这两个表名和use alias.*指定一个别名即可 然后它将从表中选择所有列 例如:
SELECT pst.*,cmt.* from post pst INNER JOIN comment cmt
FROM ...
列出列名总是一种更好的方法,只要可行,它可能会给MySQL优化器一些提示 此外,当对类似的列名进行连接时,我将使用语法
SELECT x.x1, x.x2 ... , y.x1, y.x2 ...
FROM post as x
INNER JOIN comment as y
USING post_id
WHERE ...
如果您在类似的列上使用
内部联接
,那么您也可以使用使用
语法。