TABLE users_community_relations
list_id int user_id int dest_user_id int
1 10 20
2 10 24
3 10 33
4 11 10
TABLE users_avatar
avatar_id int user_id int webavatar_thumbnail
1 10 test.jpg
2 10 test2.jpg
3 20 test2.jpg
4 20 test11.jpg
TABLE users
user_id int nick varchar
10 kaka
20 caca
24 dada
33 roro
我需要查询这三个表有逻辑,表users_community_relations我把user_id = 10例如我从同一个表列获取结果dest_user_id 20,24,33每个数字代表下两个表中的user_id,我需要从接下来的两个表中获取所有数据,从dest_user_id列获取20,24,33个数字。有时表users_avatar不为用户保留任何头像,在这种情况下,此表中的字符串可能为空。有时它会持有两行以上,在这种情况下,我只需要获得第一行但是使用avatar_id DESC users_avatar表进行排序。
答案 0 :(得分:0)
这应该有效:
SELECT ucr.*, u.*, ua1.*
FROM users_community_relations ucr
LEFT JOIN users u
ON u.user_id = ucr.user_id
LEFT JOIN users_avatar ua1
ON ua1.user_id = u.user_id
LEFT JOIN users_avatar ua2
ON ua2.user_id = u.user_id AND ua2.avatar_id > ua1.avatar_id
WHERE ua2.avatar_id IS NULL
它使用连接来确保我们只返回具有最高avatar_id的user_avatar行或如果没有头像则返回NULL。