WITH HobbyAliases AS ( SELECT COALESCE(a2r.real_name_id, h.real_name_id) AS user_id, -- 如果别名ID存在,则使用AliasToRealID表中的实际名字ID,否则直接使用爱好表中的实际名字ID h.hobby FROM hobbies h LEFT JOIN AliasToRealID a2r ON h.alias_id = a2r.alias_id -- 如果爱好表中的别名ID在AliasToRealID表中有匹配项,则进行连接 WHERE h.real_name_id IS NOT NULL OR h.alias_id IS NOT NULL -- 确保至少有一个ID是非NULL的(理论上应该总是这样,因为每条记录都会有一个ID) ) SELECT user_id, STRING_AGG(hobby, ', ') AS hobbies FROM HobbyAliases GROUP BY user_id ORDER BY user_id;