mysql中JOIN上的重复列名

cyp*_*r75 5 mysql join

我有这个 sql 的问题

SELECT COUNT( * )
FROM (

  SELECT *
  FROM `user` `t`
  JOIN `user_relation` r ON ( t.user_id = r.follower_id
  OR t.user_id = r.user_id )
  WHERE r.status = "active"
  AND (
    r.user_id =125
    OR r.follower_id =125
  )
  AND t.user_id !=125
  GROUP BY t.username
)sq
Run Code Online (Sandbox Code Playgroud)

我总是收到错误消息:“#1060 - Duplicate column name 'user_id'” 谁能帮忙/解释一下,我做错了什么?

提前致谢

Mud*_*san 5

您需要在内部查询中提供别名列

SELECT COUNT( * )
FROM (

  SELECT t.*
  FROM `user` `t`
  JOIN `user_relation` r ON ( t.user_id = r.follower_id
  OR t.user_id = r.user_id )
  WHERE r.status = "active"
  AND (
    r.user_id =125
    OR r.follower_id =125
  )
  AND t.user_id !=125
  GROUP BY t.username
)sq
Run Code Online (Sandbox Code Playgroud)

count(*)由于您只对可以返回任一列t.*或任何一个列感兴趣r.*,因此条件是内部查询中的列名必须是唯一的,或者在两个表中都相同,而不是以表别名为前缀。