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 表进行排序。
最佳答案
这应该有效:
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。
关于mysql - 三个表,根据第一个表(mysql)得到第2个和第3个表的所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9166865/