我需要进行如下查询:
SELECT * from TABLE
WHERE cola= "aaa"
and
(
(colb = "bbb" and (colc="ccc" or colc = "ddd"))
or
(colb="eee" and colc = "fff")
)
我尝试了Andexpression()
,orexpression()
,openexpression()
或closeexpression()
,但我无法理解!
任何帮助将不胜感激!
答案 0 :(得分:1)
WhereExpression
,AndExpression
等应该有效(另请参阅this question),但它并不是一直对我有效。
只要您的Where
条款相对简单,您就可以添加一些重复并使用逻辑运算符优先级:
SELECT * from TABLE
WHERE cola="aaa" AND colb="bbb" AND colc="ccc"
OR
cola="aaa" AND colb="bbb" AND colc="ddd"
OR
cola="aaa" AND colb="eee" AND colc="fff"
这会导致类似这样的事情:
DB.Select().From<TABLE>()
.Where(TABLE.colaColumn).isEqualTo("aaa")
.And(TABLE.colbColumn).isEqualTo("bbb")
.And(TABLE.colcColumn).isEqualTo("ccc")
.Or(TABLE.colaColumn).isEqualTo("aaa")
.And(TABLE.colbColumn).isEqualTo("bbb")
.And(TABLE.colcColumn).isEqualTo("ddd")
.Or(TABLE.colaColumn).isEqualTo("aaa")
.And(TABLE.colbColumn).isEqualTo("eee")
.And(TABLE.colcColumn).isEqualTo("fff")