MySQL--------大於小於比較問題
阿新 • • 發佈:2019-02-18
1.測試資料
DROP TABLE IF EXISTS `access_log`;
CREATE TABLE `access_log` (
`aid` int(11) NOT NULL AUTO_INCREMENT,
`site_id` int(11) NOT NULL DEFAULT '0' COMMENT '網站id',
`count` int(11) NOT NULL DEFAULT '0' COMMENT '訪問次數',
`date` date NOT NULL,
PRIMARY KEY (`aid`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
INSERT INTO `access_log` VALUES ('1', '1', '45', '2016-05-10'), ('2', '3', '100', '2016-05-13'), ('3', '1', '230', '2016-05-14'), ('4', '2', '10', '2016-05-14'), ('5', '5', '205', '2016-05-14'), ('6', '4', '13', '2016-05-15'), ('7', '3', '220', '2016-05-15'), ('8', '5', '545', '2016-05-16'), ('9', '3' , '201', '2016-05-17');
2.實踐
1.如果想去訪問次數大於45,小於150的網站ID,我想大多數會使用下面語句
SELECT site_id,count FROM `access_log` WHERE 45<=count<=150
結果為:
並不是我們想要的結果
正確的語法為:
1.SELECT site_id,count FROM `access_log` WHERE 45<=count AND count<=150
2.SELECT site_id,count FROM `access_log` WHERE count BETWEEN 45 AND 150
結果為:
結果正確
在其他語言中,例如:php
使用4<=$a<=6來表示大於而且小於是不準確的,需要使用4<=$a&&$a<=6
3.between介紹
SQL BETWEEN 操作符
BETWEEN 操作符選取介於兩個值之間的資料範圍內的值。這些值可以是數值、文字或者日期。
請注意,在不同的資料庫中,BETWEEN 操作符會產生不同的結果!
在某些資料庫中,BETWEEN 選取介於兩個值之間但不包括兩個測試值的欄位。
在某些資料庫中,BETWEEN 選取介於兩個值之間且包括兩個測試值的欄位。
在某些資料庫中,BETWEEN 選取介於兩個值之間且包括第一個測試值但不包括最後一個測試值的欄位。
因此,請檢查您的資料庫是如何處理 BETWEEN 操作符!
1.日期使用
SELECT * FROM access_log WHERE date BETWEEN '2016-05-10' AND '2016-05-14'
或者 SELECT * FROM `access_log` WHERE Day(date) BETWEEN 10 AND 14
當需要篩選月的時候可以用Month(),年就用Year()
結果如下: