我有一个相当简单的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
部分显式列出每个列名,并使用别名来区分重复的列名,但每个表中有很多列,它会很混乱
有更有效的方法吗?
答案 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 ...