mysql中有4类运算符,它们是:
算术运算符
比较运算符
逻辑运算符
位 *** 作运算符
算术 *** 作符
算术 *** 作符是SQL中最基本的 *** 作运算符,主要有一下几种运算符:
+(加)、 -(减)、 *(乘)、 /(除)、 %(求余或者模)
比较运算符
一个比较运算符的结果总是1,0或者是NULL。MySQL中的比较运算符有:
=、<=>、<>(!=)、<=、>=、>、IS NULL、IS NOT NULL、LEAST、GREATEST、BETWEEN . . . AND. . . 、ISNULL、IN、NOT IN、LIKE、REGEXP
逻辑运算符
逻辑运算符的求值所得结果均为TRUE、FALSE或NULL。
逻辑运算符有:
NOT 或者 !
AND 或者 &&
OR 或者 ||
XOR(异或)
位运算符
位运算符是用来对二进制字节中的位进行测试、移位或者测试处理。位运算符有:
位或(|)
位与(&)
位异或(^ )
位左移(<<)
位右移(<<)
位取反(~)
# mysql不支持其它复杂数据库的类似 rank() over 的排名和统计查询# 只能通过变通的子查询和逻辑计算方式来实现,对于中小数据量可以考虑-- rank 排名实现select inline_rownum, aa, cc, amt, orderid FROM(select# logic_cal 只是实现计数器计算的,每次逐条查询时会对比当前 cc 与 @last_cc 是否相同,如果不同则把当前该列值赋于 @last_cc 并重设计数器 @num := 1,否则计数器自加 @num := @num + 1(case when cc <>@last_cc then concat(@last_cc := cc, @num := 1 ) else concat(@last_cc, @num := @num + 1) end ) logic_cal, @num as inline_rownum, aa, cc, amt, orderidfrom tb_rank,( select @last_cc := '') t, # 初始化 @last_cc 为 '', 如要检查的列(基于计数器统计的列)是int型,则初始化为0varchar型初始化为''( select @num := 0 ) t2 # 初始化@num为0order by cc, orderid asc # 排序的方式会影响@num的生成,因为logic_cal是逐行计算的) twhere inline_rownum <= floor(amt*0.8) #限制条数,取常量值或其他order by cc,orderid asc欢迎分享,转载请注明来源:内存溢出
评论列表(0条)