Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Duplicate column name on JOIN in mysql

Tags:

join

mysql

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

like image 217
cypher75 Avatar asked May 09 '14 09:05

cypher75


1 Answers

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.

like image 54
Mudassir Hasan Avatar answered Nov 15 '22 09:11

Mudassir Hasan