Mysql连接查询与where和like

时间:2015-03-23 06:37:13

标签: mysql join where sql-like

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

用户


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)。请给我一个解决方案。

1 个答案:

答案 0 :(得分:2)

你必须在你的或陈述周围使用()

 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%'

这不是你想要的。