Duplicate column name on JOIN in mysql

19,467

You need to provide aliased column in inner query

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

Since you are interested in count(*) only you can return either t.* or r.* or any one column , the condition being that column names in inner query MUST be unique or if are same in both tables than prefixed with table alias name.

Share:
19,467
cypher75
Author by

cypher75

I'm a programmer from germany. Programming Websites, Onlineshops, Newsletter, CMS

Updated on June 17, 2022

Comments

  • cypher75
    cypher75 almost 2 years

    I've got a problem with this 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
    

    I always get an error: "#1060 - Duplicate column name 'user_id' " Can anyone help/explain, what I did wrong?

    Thanks in advance Jan