繁体   English   中英

这个mysql连接怎么了?

[英]what's wrong with this mysql join?

SELECT p1.userid, p1.username, p2.lids 
        FROM VB_user p1
        LEFT JOIN AB_judge_perm p2 on p1.userid = p2.userid
        WHERE p1.membergroupids LIKE '".19.",%'
        OR p1.membergroupids LIKE '%,".19."'
        OR p1.membergroupids LIKE '%,".19.",%'
        OR p1.membergroupids = '".19."'

我在想p1.membergroupids与join的配合不好? 如果删除p1.membergroupids条件查询,查询的工作方式将与我想要的一样,例如,我希望它仅显示属于组19(即LIKE的用户。 p1.membergroupids是一个多值属性。

正如@muistooshort指出的那样,您应该将membergroupids移动到多对多联接表中,该问题将消失。 如此可怕的未规范化结构会导致您无比痛苦! 创建一个新的联接表-member_group(member_id,group_id)

如果您坚持使用这种可怕的结构,则可以用FIND_IN_SET替换多个OR条件-

SELECT p1.userid, p1.username, p2.lids 
FROM VB_user p1
LEFT JOIN AB_judge_perm p2
    ON p1.userid = p2.userid
WHERE FIND_IN_SET(19, p1.membergroupids)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM