Mysql 使用 where 和 like 加入查询

Mysql join query with where and like

我有三个相关的 tables usersgroupsgroup_members。用户 table 包含 users 信息,groups table 包含群组名称和群组所有者 ID(即 users_id)。 Table group_members 包含每个组的成员(user_idgroup_id)。我尝试加载每个组的用户详细信息,但结果不正确。我的 table 是,

用户


id   firstname   lastname    email

1    anu         mm          anu@gmail.com
2    manu        mohan       manu@gmail.com
3    cinu        ab          cinu@gmail.com
4    vinu        mj          vinu@gmail.com
5    vijesh      cc          vijesh@gmail.com
6    admin       admin       admin@gmail.com


id     user_id     name

1      1           group1
2      2           group2
3      2           group3
4      3           group4

group_members


id    user_id    group_id

1     1          1
2     2          2
3     2          3
4     3          4
5     2          3
7     1          2
8     1          3
9     3          1

但是当我尝试下面的查询时,

select users.firstname,users.lastname,users.email,groups.name as groupname from users inner join groups on groups.user_id = users.id inner join group_members on group_members.group_id = groups.id where groups.id=3 AND users.firstname LIKE 'cin%' OR users.lastname LIKE 'cin%' OR users.email LIKE 'cin%'

得到结果(这不是预期的)


firstname     lastname      email            groupname

cinu          ab            cinu@gmail.com   group4

在这种情况下,我使用了 where 条件 WHERE groups.id =3,但结果采用 group4(groups.id 为 4)。请给我一个解决方案。

您必须在您的 or 语句周围使用 ()

 where groups.id=3 AND (users.firstname LIKE 'cin%' OR users.lastname LIKE 'cin%' OR users.email LIKE 'cin%')

因为AND有更高的优先级你查询看起来像:

 where (groups.id=3 AND users.firstname LIKE 'cin%') OR users.lastname LIKE 'cin%' OR users.email LIKE 'cin%'

这不是你想要的。