Sql 与where&;和

Sql 与where&;和,sql,join,Sql,Join,出于某种原因,我仍然启用了SMS\u返回1s和ACTIVE返回0s。谁能给我指出正确的方向吗 SELECT ROLE_ID, FIRST_NAME, LAST_NAME, EMAIL, t.CLUB_ID, sms_enabled, active FROM TFO_USER t INNER JOIN CLUB c ON c.CLUB_ID = t.CLUB_ID WHERE t.ROLE_ID=2 OR t.ROLE_ID=3 AND c.SMS_ENABLE

出于某种原因,我仍然启用了
SMS\u
返回
1
s和
ACTIVE
返回
0
s。谁能给我指出正确的方向吗

SELECT 
    ROLE_ID, FIRST_NAME, LAST_NAME, EMAIL, t.CLUB_ID, sms_enabled, active
FROM TFO_USER t    
INNER JOIN CLUB c
    ON c.CLUB_ID = t.CLUB_ID
WHERE 
    t.ROLE_ID=2 OR t.ROLE_ID=3 AND c.SMS_ENABLED=0 AND c.ACTIVE=1;

您需要用括号将子句分组:

SELECT 
   ROLE_ID, FIRST_NAME, LAST_NAME, EMAIL, t.CLUB_ID, sms_enabled, active
FROM
   TFO_USER t
      INNER JOIN CLUB c ON c.CLUB_ID = t.CLUB_ID
WHERE ( t.ROLE_ID=2 OR t.ROLE_ID=3 ) AND 
      c.SMS_ENABLED=0 AND 
      c.ACTIVE=1

如果在相同的条件下使用或,请使用括号。
t(2,3)
中的角色ID将解决问题,并且不会太冗长