Возможно, я бы попробовал другой подход, возможно, что-то вроде этого:
SELECT *
FROM `log`
WHERE `user` IN (
SELECT `user1` FROM `friendships` WHERE `user2` = @user AND `active` = 1
UNION ALL
SELECT `user2` FROM `friendships` WHERE `user1` = @user AND `active` = 1
UNION ALL
SELECT @user
)
GROUP BY
`arguments`
ORDER BY
`created` DESC
Хотя, по правде говоря, я бы не стал выбирать столбцы, которые не объединяются и не включаются в GROUP BY в запросе, подобном этому, даже если MySQL позволит мне это сделать.
Другая альтернатива:
SELECT *
FROM `log`
WHERE `user` IN (
SELECT
CASE `user1` WHEN @user THEN `user2` ELSE `user1` END AS `user`
FROM `friendships`
WHERE (`user1` = @user OR `user2` = @user) AND `active` = 1
UNION ALL
SELECT @user
)
GROUP BY
`arguments`
ORDER BY
`created` DESC