如何结合两个where子句使用和/或?

时间:2013-05-09 10:38:00

标签: sql

在进行查询时,我是否有可能同时使用AND / OR运算符或只使用其中任何一个?

如果我想使用employee_id_nameresolved_date,我可以使用以下代码:

WHERE 
    employee_id_name = '" . $xid . "' 
    OR resolved_date = '" . $date . "'

如果我想同时使用这两种方法,我会使用以下内容:

WHERE 
    employee_id_name = '" . $xid . "' 
    AND resolved_date = '" . $date . "'

是否可以将这两个条款结合起来?如果我想使用employee_id_nameresolved_date进行查询...并且如果我还想使用其中任何一个进行查询...

更新

我希望能够同时使用employee_id_nameresolved_date,但也有时间我只想使用其中任何一个...现在我不知道我希望每次执行查询时都会使用ANDOR更改我的代码。

2 个答案:

答案 0 :(得分:2)

除非您添加第3个参数以决定是否需要ANDOR,否则无法将其合并。在这里我使用了$querycondition,它可以是1或2.这当然不是很好的PHP语法:我把它留给你

WHERE
  (1= $querycondition AND
        (employee_id_name = '" . $xid . "' OR resolved_date = '" . $date . "')
  )
  OR
  (2= $querycondition AND
        (employee_id_name = '" . $xid . "' AND resolved_date = '" . $date . "')
  )

答案 1 :(得分:0)

当然,您可以加入 AND OR

select 1
from table t
where a = b
and (b = c or b = d)
;

括号不是非常必要的。

如果您只是更改或使用和,您的选择是完全不同的结果集。所以你必须知道选择应该做什么。

在第一种情况下,您会找到名称匹配的所有记录或日期。在第二种情况下,您只能找到名称匹配的记录,并且在同一记录中也会找到日期。

表示: 如果日期有效,第一个查询还会查找名称不同的记录,因为只有一个子句必须匹配。在AND查询中,ALL子句必须在单个记录上匹配才能将其传递给结果集。