没有合适的资源?快使用搜索试试~ 我知道了~
首页mysql一个表有三个外键,其中该表的两个字段的应对的外键的表都是同一张表,解决如何将其查询出来
需求是这样的,一个资源表有分类r_class_id(分类表id对应的外键) 创建者r_up_creator(用户表id对应的外键) 审核者r_ver_id (用户表id对应的外键),这时候该怎么将其都查询出来呢? 首先用左连接: select resources.*,resource_classify.rc_name,users.u_name as r_up_creator ,users_1.u_name as r_verifier from resources left join resource_classify on resources.r_class_id = resource_cla
资源详情
资源评论
资源推荐

mysql一个表有三个外键,其中该表的两个字段的应对的外键的表都是同一张表,解决如一个表有三个外键,其中该表的两个字段的应对的外键的表都是同一张表,解决如
何将其查询出来何将其查询出来
需求是这样的,一个资源表有分类r_class_id(分类表id对应的外键) 创建者r_up_creator(用户表id对应的外键) 审核者r_ver_id (用户表id对应的外键),这时候该怎么将其都查
询出来呢?
首先用左连接:
select resources.*,resource_classify.rc_name,users.u_name as r_up_creator ,users_1.u_name as r_verifier from resources left join resource_classify on resources.r_class_id = resource_classify.rc_id left join users ON
resources.r_creator_id = users.u_id left join users as users_1 ON resources.r_ver_id = users.u_id group by r_id
结果如下,其中使用了 group by 去重,但是实际上r_verifier 字段对应的那四个有值的行 并不是123,而是小蓝蓝,如何知道它是小蓝蓝呢?其中看r_ver_id 就知道,它和
r_up_creator的值是一样的.
这时候用inner join 加左连接就可以解决了。
select resources.*,resource_classify.rc_name,users.u_name as r_up_creator ,users_1.u_name as verifier from resources INNER JOIN resource_classify ON resources.r_class_id = resource_classify.rc_id INNER JOIN
users ON resources.r_creator_id = users.u_id left JOIN users AS users_1 ON resources.r_ver_id =users_1.u_id
结果如下:
完美的解决了。期间还考虑用 inner join,但是只用inner join 的话 r_ver_id 如果没有值的话查询不出全部内容。
纯属开发中意外发现,并无抄袭。如若转载请标明出处
作者:qq_41134977


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0