首页 > 解决方案 > 与多个 AND 谓词混淆

问题描述

SELECT *
FROM TABLE
WHERE classi_type = '3'
  AND job_role IN (52)
  AND job_qualification IN (25)
  AND job_type IN (7)
  AND job_gender = 'Female'
  AND (job_expmin >= '5'
       AND job_expmax <= '10')
  OR (job_salmin >= '0'
      AND job_salmax <= '30000')
  OR (job_agemin >= '24'
      AND job_agemax <= '33')

IN条件正在发挥作用。问题在于多个AND.

标签: mysqlsql

解决方案


我认为你只需要正确的括号:

Select *
from table 
where classi_type = '3' AND
      job_role IN (52) AND
      job_qualification IN (25) AND
      job_type IN (7) AND
      job_gender = 'Female' AND
      ((job_expmin >= 5 AND job_expmax <= 10) OR
       (job_salmin >= 0 AND job_salmax <= 30000) OR
       (job_agemin >= 24 AND job_agemax <= 33)
     )

我猜最后六个引用的列实际上是某种数字。比较应该是数字,而不是字符串。


推荐阅读