1条语句中使用OR进行多组查询

时间:2018-11-14 10:40:11

标签: mysql

我试图确定添加到其他分数较高的表中的低“分数”。简而言之,我想知道某人在单个问题上得分为1,而其他问题在2分以上的得分。我想到了这个

SELECT * FROM `review_survey`, `users` WHERE review_survey.user_id =users.kituser_id AND 
(review_survey.s1 < 2 AND review_survey.s2 >= 2 AND review_survey.s3 >= 2 ) 
OR (safeguard_review_survey.s1 >= 2 AND safeguard_review_survey.s2 < 2 
AND safeguard_review_survey.s3 >= 2) AND `complete` = 1 AND users.account = 1

但是它返回的海量数据集可能不准确。

我从哪里开始?

1 个答案:

答案 0 :(得分:0)

首先,请先尝试以下操作:

SELECT * FROM 
    `review_survey`, `users` 
WHERE 
     review_survey.user_id =users.kituser_id 
AND (  --<-- missing parenthesis
      (review_survey.s1 < 2 AND review_survey.s2 >= 2 AND review_survey.s3 >= 2 ) 
      OR 
      (safeguard_review_survey.s1 >= 2 AND safeguard_review_survey.s2 < 2 AND safeguard_review_survey.s3 >= 2)
    )   --<-- missing parenthesis
AND `complete` = 1 AND users.account = 1

更好的是,随处移动东西

 condition AND condition2 AND condition3 AND ( condition4 OR condition5)

截至目前,很可能AND和OR不能按您期望的那样工作