mysql - 三个表,根据第一个表(mysql)得到第2个和第3个表的所有结果

标签 mysql

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/

相关文章:

mysql - 插入时触发;代替 A 做 B

mysql - 从一个查询获取查询结果并使用它来过滤下一个结果时存在一些 SQL 子查询问题

mysql - 触发器@DBMS 出现问题

php - 现有站点的 CMS

php - preg_replace_callback 错误中的正则表达式。 PHP

mysql - 为什么在特定日期创建的 WP_User 数量中返回的记录很少

php - 如何在 PHP 中自动找出特定 MySQL 列的数字索引?

mysql - 如何为 Rails Dev 添加本地 Mysql 用户?

mysql - 如何获得每个唯一 'column' 的 SUM() ?

MySQL NDB 事件 - 监听对特定行的更改