zoukankan      html  css  js  c++  java
  • mysql 多对多查询

    SELECT * FROM test_user LIMIT 3; #得出(1,2,3)
    # user和 role是多对多的关系
    # 多个user对应多个role
    # 需求是根据条件查出user列表,并且里面携带了自己所有的role
    # 本来思路是在user表里面查出所有user
    # 然后通过for循环,在循环里面用两个left join来查询每个人的所有角色
    # 但是在for循环里连表速度会有损耗
    
    # group_concat()
    
    # 1、功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
    
    # 2、语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
    SELECT u.*,GROUP_CONCAT(r.name) as names FROM  test_user u LEFT JOIN test_user_role ur on ur.user_id=u.id 
    LEFT JOIN test_role r on r.id=ur.role_id WHERE u.id in (1,2,3) group by u.id # 通过查出的结果group出结果集
  • 相关阅读:
    分清函数指针和指针函数_
    常量指针与指针常量的区别
    Oracle11g数据库在Win系统下的安装
    MySQL-python模块
    堡垒机(paramiko)
    paramiko模块
    线程池
    线程、进程和协程
    Twisted
    SocketServer模块
  • 原文地址:https://www.cnblogs.com/cl94/p/12566889.html
Copyright © 2011-2022 走看看