where方法的用法是mysql查询语句的精髓,也是最复杂的部分,任何一个封装的sql库where会是最复杂的一个部分。 where查询支持 字符串:String , JSON对象 ,数组对象查询 , 表达式查询
//这里需要注意的是传入的字符串需要是合格的sql语法,字符串需要有引号
sql.table('node_table').where('id=1 AND name=`张三`').select()
最后生成的SQL语句是
SELECT * FROM node_table WHERE id=1 AND name=`张三`
let data={
id:1,
name:'zhangshan'
}
sql.table('node_table').where(data).select()
最后得出的SQL语句是
SELECT * FROM node_table WHERE id=1 AND name=`zhangshan`
字段之间默认用 AND 链接,若要指定连接方法可以传参数 _type:'or' || _type:'and'
let data={
id:1,
name:'zhangshan',
_type:'or'
}
sql.table('node_table').where(data).select()
最后得出的SQL语句是
SELECT * FROM node_table WHERE id=1 OR name=`zhangshan`
let data=[{
id:1,
name:'zhangsan'
}]
sql.table('node_table').where(data).select()
最后得出的SQL语句是
SELECT * FROM node_table WHERE (id=1 AND name=`zhangsan`)
多条json数组
let data=[
{id:1,name:'zhangsan',_type:'or'},
{sex:1,number:3}
]
sql.table('node_table').where(data).select()
最后得出的SQL语句是
SELECT * FROM node_table WHERE (id=1 OR name=`zhangsan` ) AND (sex=1 AND number=3 )
JSON字段之间默认用 AND 链接,若要指定连接方法可以传参数 _nexttype:'or' || _nexttype:'and'
let data=[
{id:1,name:'zhangsan',_type:'or',_nexttype:'or'},
{sex:1,number:3,_type:'and'}
]
sql.table('node_table').where(data).select()
最后得出的SQL语句是
SELECT * FROM node_table WHERE (id=1 OR name=`zhangsan`) OR (sex=1 AND number=3)
上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式支持更多的SQL查询语法,查询表达式的使用格式: 表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:
表达式 | 含义 |
---|---|
EQ | 等于(=) |
NEQ | 不等于(<>) |
GT | 大于(>) |
EGT | 大于等于(>=) |
LT | 小于(<) |
ELT | 小于等于(<=) |
LIKE | 模糊查询 |
[NOT] BETWEEN | (不在)区间查询 |
[NOT] IN | (不在)IN 查询 |
例如:
let data={
id:{eq:100,egt:10,_type:'or'},
name:'zhangshan'
}
sql.table('node_table').where(data).select()
最后得出的SQL语句是
SELECT * FROM node_table WHERE ((id=100) OR (id>=10)) AND name=`zhangshan`
更多表达式查询请参考:4.2.表达式查询