mysql 关联表 中间表查询

2018-04-19  本文已影响566人  十一岁的加重

用户表User: id name phone
组表Group:id groupName
关联表(中间表):用户组User_Group id userId groupId

查询某个组里的所有用户

SELECT u.name, u.phone
FROM User u
WHERE EXISTS
(
    SELECT 1
    FROM User_Group u_g
    INNER JOIN Goup g
        ON g.id = u_g.groupId
    WHERE u_g.userId = u.id
    AND g.groupName = 'g1'
--    AND g.groupName RLIKE 'g1'
)

查询某个组里的姓名或者手机号的用户

SELECT u.name, u.phone
FROM User u
WHERE EXISTS
(
    SELECT 1
    FROM User_Group u_g
    INNER JOIN Goup g
        ON g.id = u_g.groupId
    WHERE u_g.userId = u.id
    AND g.groupName = 'g1'
-- -- 手机号模糊像、包含:明
   AND u.phone RLIKE '15198'
-- 名字模糊像、包含:明
--    AND u.name RLIKE '明'

)

那么问题来了,删除一个组,咋办,
得同时删除Group里的和user_Group里的

已解决
设置外键时,删除时的,操作


image.png

然后sql语句我们正常写就行, 执行以下的语句,就会在UserGroup表中删除groupName为测试组的所有记录,同时也会在User_Group表中删除groupId和
UserGroup表中groupName为测试组的id相同的所有记录。

DELETE FROM UserGroup  WHERE groupName = '测试组';
上一篇 下一篇

猜你喜欢

热点阅读