You need to provide alias columns in the 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 count(*), you can return either t.*, or r.*, or any column, provided that the column names in the internal MUST query are unique, or if they are the same in both tables than the prefix with the table alias name.
source
share