1. 程式人生 > >mssql:between and 用法

mssql:between and 用法

--輸出所有1500<=sal<=3000的資訊
select *
from emp
where sal between 1500 and 3000;

--輸出1500到3000之間工資最高的3個人
select top 3 *
from emp
where sal between 1500 and 3000;

--輸出1500到3000之間工資最高的3個人並從大到小排序
select top 3 *
from emp
where sal between 1500 and 3000
order by sal desc;

我學的sql server2005查詢,between理應是包含端點值的。比如上面的第一條語句,輸出結果是這樣(有1500和3000):

但是我發現如果加了top以後,如第二句,那麼前三裡面就沒有3000那個端點了,如下圖:

再看第三句,如果按照從大到小排序輸出(加order by),那麼又有3000這個端點了。如下圖:

初學不是很理解。到底between包不包括端點值?我上面這幾個問題,是sql server的規定呢,還是有BUG,還是我哪裡寫錯了。請大家幫忙看看。

第二句:你限制了輸出的行數,因為3000那行資料按照預設排序在後面,所以沒選擇出來。第三句:你添加了按照sal從到小排列,3000才出來了。你不是對between不理解,而是對top不理解。 – wingspread2013-07-31

相關推薦

mssql:between and 用法

--輸出所有1500<=sal<=3000的資訊 select * from emp where sal between 1500 and 3000; --輸出1500到3000之間工資最高的3個人 select top 3 * from emp wher

SQL-技術在於細節 BETWEEN AND用法

總結 images and logs 容易 sql 大於等於 分享 測試 做了一道w3schoolSQL測試,20道題居然錯了1道,現分析總結如下: 百度了一下,between and 是【a,b】全封閉結構,即 大於等於a並小於等於b。 運行結果分別如下 1)bet

sql between and用法

BETWEEN 操作符 操作符 BETWEEN ... AND 會選取介於兩個值之間的資料範圍。這些值可以是數值、文字或者日期 SQL BETWEEN 語法 SELECT column_name(s) FROM table_name WHERE column_name BETWEEN v

sql between and用法

BETWEEN 操作符 操作符 BETWEEN ... AND 會選取介於兩個值之間的資料範圍。這些值可以是數值、文字或者日期 SQL BETWEEN 語法 SELECT column_name(s) FROM table_name WHERE column_name

Mysql 數據查詢語句中between and 是包含邊界值的

數據查詢 repl use ref net bsp 使用 一個數 not MySQL的sql語句中可以使用between來限定一個數據的範圍,例如: select * from user where userId between 5 and 7; 查詢userId為5、6,

between and 前綴索引執行計劃小結

等號 大於 src gpo 分享圖片 image 分享 計劃 class 假如說聯合索引前綴部分使用了 between and 情況下(包括大於等於,小於等於),執行計劃會非常差,因為他不知道你一共有多少行。 復合索引第一個列一般來說必須要用等號。 betwe

Difference between == and ===

RF HR types ica ref check tps obj-c obj In swift 3 and above === (or !==) Checks if the values are identical (both point to the same mem

MySQL?between ... and ...

style mysql 之間 family inf image ima ont spa between 初值 and 終值:求出該列列值在初值和終值之間所有的數據 格式如下: select 列名/* from 表名 where 列名 between 初值 and 終值

關於mysql使用between and處理時間區間右邊界問題

mysql的between and語法是包括左右邊界的。 但是查詢時注意日期型別 date 和 datetime ,TIMESTAMP test_date date型別 select * from test where test_date between '2018-10-21' an

SQL語句between and的邊界問題

操作符 BETWEEN ... AND 會選取介於兩個值之間的資料範圍。這些值可以是數值、文字或者日期。 語法: SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2 注意事項:

mysql使用between and處理時間區間包括右邊界

 datetime型別 CREATE TABLE `test_date` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `create_time` dateti

關於sql語句between and的邊界問題 關於sql語句between and的邊界問題

關於sql語句between and的邊界問題   BETWEEN 操作符 操作符 BETWEEN ... AND 會選取介於兩個值之間的資料範圍。這些值可以是數值、文字或者日期。 SQL BETWEEN 語法 1 SELECT column_na

oracle使用between and邊界問題

如果是隻查詢某兩個月之間的資料,會預設從每個月的1號開始查,包前包後 eg:select * from test_hsj where regdate between to_date('2015-05','yyyy-MM') and to_date('2015-06','yyyy-MM')  

ORACLE中between-and 無效數字

1.當需要用到between-and的欄位是varchar2型別時,放在where 之後會報錯: ORA-01722:無效數字 select  * from table_name  where num

測試hive中的between and 是否包頭包尾

在SQL中,between and在不同SQL語言中結果不一樣,今天就來測試下hive中的between and 是否包頭包尾 結論是包頭包尾的,接下來用實踐去證明它。 首先建立一張臨時表 create temporary table test.test_test ( id in

關於sql between and 邊界 一個備忘

計算時間的時候都是會轉換成時間戳的形式,時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。 between and的邊界是   >='2018-04-28' 和  &l

Oracle between and 邊界問題

                     BETWEEN條件的語法為:expression BETWEEN value1 AND value2;1Oracle BETWEEN條件將返回表示式在value1和value2(含)範圍內的記錄。例子:Oracle的BETWEEN..AND..前後都是閉區間,也就是說

Mycat 實現MongoDB的BETWEEN AND和多IN&NOT IN查詢

在實現過程中第一就是分析怎麼去實現,其次在mycat哪個部分實現。首先我們知道BETWEEN AND是一個區間值查詢,而IN 是一個多值且的關係,其實最終目的都是封裝為MongoDB支援的資料庫操作語句,如:db.getCollection('t_alarm_aggr_201

mysql資料庫使用between and 的不包含右邊界問題

最近在公司經常支援業務部門資料提取,遇到了一個提取時間間隔的問題,想到了between and比較方便, 之前經常用這個關鍵字,但是從來沒思考過它的邊界問題, 所以趁這次研究了一下,廢話不多說, 直接上例子: select * from user; select * from user w

MySQL:05---DQL單表查詢(指定、多條件、between..and、like萬用字元、空值、limit、去重合並查詢)

一、查詢指定欄位 1. 查詢所有欄位 select  *  from  表名; 2.查詢指定欄位 select  欄位1,欄位2...   from  表名; 二、條件查詢 概念:條件查詢可通過wher