mysql高级

淺唱寂寞╮ 提交于 2019-12-06 11:48:16

1.UNSIGNED无符号类型  ZEROFILL用0填充以满足数据长度。

2.bit_count(data):data的二进制数包含1的个数;mysql> select bit_count(3);结果为2

   bit_or():    按位或运算
   bit_and():按位与运算

  例如:

CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL,
             day INT(2) UNSIGNED ZEROFILL);
INSERT INTO t1 VALUES(2000,1,1),(2000,1,20),(2000,1,30),(2000,2,2),
            (2000,2,23),(2000,2,23);

求上表中:每月的访问量?

SELECT year,month,BIT_COUNT(BIT_OR(1<<day)) AS days FROM t1
       GROUP BY year,month;|

由于1<<day 如果day数据相同,那么运算后的结果是一样的。bit_or运算后对应位1和1或运算结果还是1.这样就达到了去重的效果。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!