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.这样就达到了去重的效果。
3.用于某个字段组间最大值的行:
SELECT article, dealer, price FROM shop s1 WHERE price=(SELECT MAX(s2.price) FROM shop s2 WHERE s1.article = s2.article);
或者
SELECT article,dealer,price from shop
where price in (select max(s2.price) from shop s2 group by article);
4.