[英]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.