对于相当简单的表结构,即。 ie. Person, Criteria, and PersonCriteria (the combi-table),我现在设置了一个查询,以选择具有所有选定条件的所有人员。
此刻查询本身看起来像这样:
SELECT
p.PersonID
FROM
Person p,
( SELECT DISTINCT PersonID, CriteriaID
FROM PersonCriteria
WHERE CriteriaID in (#list_of_ids#)
) k
WHERE
p.PersonID= k.PersonID
GROUP BY
p.PersonID
HAVING
Count(*) = #Listlength of list_of_ids#
到目前为止,没有问题,一切正常。
现在,我想为用户提供在搜索中添加一些AND和OR变量的可能性。有人会说:
我正在寻找一个拥有以下条件的人:条件1 AND 3 AND 4(上面的查询将涵盖该条件)AND(5 OR 6 OR 7)AND(8 OR
9),依此类推…
我不确定从哪里开始。我希望其他人也可以.. :-)
我不得不说-我很困惑。我想不出任何解决方案,甚至会接近。我会尝试在这些方向上寻找解决方案:
补充: 啊,我想我明白了!虽然我认为演出会很惨。但这行得通!例如,如果您需要搜索,1 AND 2 AND (3 OR 4)
则可以编写:
SELECT
*
FROM
Persons A
WHERE
EXISTS (Select * from PersonCriteria B WHERE A.PersonID=B.PersonID AND CriteriaID=1)
AND
EXISTS (Select * from PersonCriteria B WHERE A.PersonID=B.PersonID AND CriteriaID=2)
AND
(
EXISTS (Select * from PersonCriteria B WHERE A.PersonID=B.PersonID AND CriteriaID=3)
OR
EXISTS (Select * from PersonCriteria B WHERE A.PersonID=B.PersonID AND CriteriaID=4)
)
补充2: 这是另一个,尽管性能可能会更差:
SELECT p.* FROM Person p
JOIN (select PersonID from PersonCriteria WHERE CriteriaID=1) c1 ON p.PersonID=c1.PersonID
JOIN (select PersonID from PersonCriteria WHERE CriteriaID=2) c2 ON p.PersonID=c2.PersonID
JOIN (select PersonID from PersonCriteria WHERE CriteriaID IN (3,4)) c3 ON p.PersonID=c3.PersonID
补充3: 这是2号的变体,但实际上可能会有不错的表现!
SELECT p.* FROM
Person p
JOIN PersonCriteria c1 on (p.PersonID=c1.PersonID AND c1.CriteriaID=1)
JOIN PersonCriteria c2 on (p.PersonID=c2.PersonID AND c2.CriteriaID=2)
JOIN PersonCriteria c3 on (p.PersonID=c3.PersonID AND c3.CriteriaID IN (3,4))
如果您向列(PersonID,CriteriaID)上的PersonCriteria添加一个索引(正是按此顺序!),那么我认为它无论如何都将与您获得的速度一样快。
在 PostgreSQL 中,AND 和 OR 也叫连接运算符,在查询数据时用于缩小查询范围,我们可以用 AND 或者 OR 指定一个或多个查询条件。 AND AND 运算符表示一个或者多个条件必须同时成立。 在 WHERE 子句中,AND 的使用语法如下: 实例 创建 COMPANY 表(下载 COMPANY SQL 文件 ),数据内容如下: 以下实例读取 AGE 字段大于 25 且 SALAR
问题内容: 基本上,我试图从基于两个不同组的SQL中获取数据,必须相等并且必须相等,但是至于我想要同时获得和,这是我尝试的无济于事。 我很确定他们的方法可以使此查询正常工作,只是不在我脑海 问题答案: 具有比更高的优先级,因此您现有的表达式当前被评估为: 要强制使用替代逻辑,需要包括显式括号: 但是,在这种情况下,可以使用MySQL的运算符代替:
本文向大家介绍求结果(and or or)相关面试题,主要包含被问及求结果(and or or)时的应答技巧和注意事项,需要的朋友参考一下
我已经读过这个答案,如何组合多个And和Or通过方法名,我同意它。但是,我不认为我的情况像行动的复杂,你可以看到。只是“and”和“OR”查询条件组合,这在SQL方式中是相当容易的,但我只想通过JPA方式来实现。
问题内容: 我怎么说 对于更复杂的查询,我应该使用原始SQL吗? 问题答案: 利用参数分组(Laravel4.2)。以您的示例为例:
问题内容: 我想在CI中组合AND OR mysql查询。我已经看过这个线程:http : //codeigniter.com/forums/viewthread/92818/。但是他们没有提供确切的解决方案。 如何严格使用CI框架创建以下查询? (我可以轻松地创建查询而无需使用方括号,但是它不是同一查询。) PS:这只是一个示例查询,即使没有意义,也不建议将查询的整个OR部分写在一个内。 编辑: