關於mysql手冊中的位組函數

mysql手冊中關於如何使用位組函數來計算每個月中用戶訪問網頁的天數

首先執行sql建表

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

執行按照年月組合的不同天數,可以自動去除重複的詢問。

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

bit_count可以統計出二進制表達式中1的個數:18 = 11101 則:BIT_COUNT(18)= 2;

bit_or 2000年02月中有一條2號的記錄兩條23號的記錄,所以"1<<day"表示出來就是
“1<<2”和“1<<23”,得到二進制數 100 和 100000000000000000000000 。然後再OR運算。即 100 OR
10000000000000000000000 OR
10000000000000000000000 =
100000000000000000000100;這樣再用BIT_COUNT處理得出的值就是2,自動去除了重複的日期。

很重要的一點是,關於mysql對group語法的處理,count(*)計算個數,bit_or(day)則是將一組數據進行位的or處理!!!!
       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章