正确使用“或”和“和”进行选择

时间:2015-01-12 23:44:10

标签: mysql

我遇到连接问题"和"和"或"一起。 这是我的代码:

SELECT * FROM table WHERE name LIKE '$name'  
  AND color LIKE '$color' 
  OR color2 LIKE '$color2' 
  OR color3 LIKE '$color3' 
  AND gender  LIKE '$gender'  -- when I add those 3, search stops working.
  OR gender2 LIKE '$gender2' 
  OR gender3 LIKE '$gender3'

问题在于,当我添加"性别"选择,我的搜索停止工作...双重"或"是否有问题或者可能有定位?

2 个答案:

答案 0 :(得分:1)

使用括号将您的OR和AND分成适当的组。 SQL的一些额外格式将使您的意图更加明显:

SELECT 
    * 
FROM 
    table 
WHERE 
    name LIKE '$name'  
    AND 
    (
        color LIKE '$color' 
        OR 
        color2 LIKE '$color2' 
        OR 
        color3 LIKE '$color3'
    ) 
    AND 
    (
        gender LIKE '$gender'
        OR 
        gender2 LIKE '$gender2' 
        OR 
        gender3 LIKE '$gender3'
    )

最后,您未在LIKE表达式中使用任何通配符。我建议只使用=,因为它会更快。

我建议您阅读以下MySQL参考文档,以便更清楚地了解其工作原理:

或者这个Q / A:

答案 1 :(得分:0)

我建议使用括号使事情变得更加明显。

您应该查看运算符优先级(http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html)以查看将首先评估哪个语句,第二个等。括号使这更加明确。

我打算发布固定的SQL,但Cory已经完成了