Query - aigodata/tangram GitHub Wiki
查询
属性
Type&Table
key为操作类型, value为数据表
操作类型
- detail:详细,单个结果
- query:查询,多个结果
- select:查询,同query
示例
{
"query":"user"
}
// 表别名
{
"query":"user as u" // 或者"user u"
}
Fields
查询字段,支持函数。数组类型, 如果是单个字段, 可以写成字符类型. 该属性可以省略,如果不指定,则默认查询所有字段
示例
{
"fields":["column_a", "column_b"]
}
Distinct
行数据去重
示例
{
"select.distinct":"user"
}
Join
多表关联Join操作, 需要在数据库表列配置中预先配置表的关联关系.
类型
{
"join":[
{
连接类型:连接表名
},
{
连接类型:连接表名
}
...
]
}
如果只有一个关联表的情况下,可以使用对象形式
{
"join":{
连接类型:连接表名
}
}
如果关联关系是left,则left可以省略,简写为字符串形式
{
"join":"连接表名"
}
中间关联表可省略,如A Join B Join C,如果不需要中间表B的信息,可省略B
{
"select":"A",
"join":"C"
}
示例
{
"join":[
{
"left":"table_a"
},
{
"right":"table_b"
},
"table_c"
]
}
Where
查询条件
类型
[condition1, condition2...] condition格式为{连接符:条件},连接符包括and和or 条件可以有多种格式 字符串:单个条件,表.字段+运算符+值,表可省略,省略情况下代表操作主表的值。 数组:多个条件,需要括号包裹 当连接符为and时,condition的连接符可以省略。即{连接符:条件} -> 条件
运算符
等于:= 不等于:!= 大于:> 大于等于:>= 小于:< 小于等于:<= in:, 逗号拼接多个值 between:~ 两边都包含边界,如果想要更精确的范围,请使用大于小于运算符 like:%= 字符串类型:==
示例
{
"where":[
"age=30", // age = 30
"age!=30", // age <> 30
"age>30", // age > 30
"age<30", // age < 30
"age>=30", // >= 30
"age<=30", // age <= 30
"age=30~40", // age between 30 and 40
"username%=%ao%", // like '%ao%'
"username=zhangsan,zhaosi", // username in ('zhangsan','zhaosi')
"username!=zhangsan,zhaosi", // username not in ('zhangsan','zhaosi')
"age==30", // age = '30'
]
}
连接符
and:{"and":"a=1"} 可简写成 ”a=1“ or:{"or":"a=1"} {"and":"a=1"}或{"or":"a=1"}是条件的最小单位。对象中的value不可以再是多个条件。如果需要多个条件,可以写多个对象 SQL中表达多个条件组合成的条件时通常用()包裹,这里用[]表示SQL中的(),将多个条件放在同一数组中
示例
Json:
{
"where":[
"sex=male",
"character=optimism",
{"or":"height=1.8"},
["job!=student", {"or":"hobby=football"}, {"or":"hobby=pingpang"}],
{"or":"age=25~40"}
]
}
SQL:
where sex = 'male'
and character = 'optimism'
or height = 1.8
and (job != 'student' or hobby = 'football' or hobby = 'pingpang')
or (age >= 25 and age <= 40)
or age between 25 40
Group
分组
类型
数组类型, 只有一个字段的时候可以写成字符.
示例
{
"group":["username", "age"] // group by username, age
}
Order
排序 ###类型 数组类型, 每个数组元素是一个字段, 空格, 升序(asc)/降序(desc)连接的字符串. 默认为asc. 只有一个字段的时候可以直接写成字符串.
示例
{
"order":["column_a desc", "column_b asc"] // order by age desc, username asc
}
简写形式
字段前面加上+,-符号。+代表升序,-代表降序
{
"order":["-age", "+username"] // order by age desc, username asc
}
Limit
分页
类型
数组类型, [开始行数, 结束行数]
示例
{
"limit":[6, 10]
}