两个值之间的SQL标准

时间:2015-12-12 16:34:14

标签: mysql sql sql-standards

我想知道,当我们使用'之间'时,SQL Standard或MySQL中是否存在差异。 更准确地说,如果我这样做:SQL标准:

A between 1 and 10 

是否等于:

1 <= A and A <= 10
-- or
1 < A ans 1 < 10

MySQL中的结果是否相同。

2 个答案:

答案 0 :(得分:3)

来自mysql dev doc

  

expr BETWEEN min AND max

     

如果expr大于或等于min且expr小于或等于   到最大值,BETWEEN返回1,否则返回0.这是等效的   如果所有参数都是表达式(min&lt; = expr AND expr&lt; = max)   属于同一类型。否则进行类型转换   第12.2节“表达式中的类型转换”中描述的规则   评价“,但适用于所有三个论点。

它明确指出 A介于1和10之间将等于 1 <= A且A <= 10

答案 1 :(得分:0)

在MySQL中

让“employee_tbl”表包含员工姓名,daily_typing_pages列。

+------+------+------------+--------------------+
| id   | name | work_date  | daily_typing_pages |
+------+------+------------+--------------------+
|    1 | John | 2007-01-24 |                250 |
|    2 | Ram  | 2007-05-27 |                220 |
|    3 | Jack | 2007-05-06 |                170 |
|    3 | Jack | 2007-04-06 |                100 |
|    4 | Jill | 2007-04-06 |                220 |
|    5 | Zara | 2007-06-06 |                300 |
|    5 | Zara | 2007-02-06 |                350 |
+------+------+------------+--------------------+

如果我们在此表上运行以下查询:

SELECT * FROM employee_tbl 
WHERE daily_typing_pages BETWEEN 170 AND 300;

查询结果如下:

+------+------+------------+--------------------+
| id   | name | work_date  | daily_typing_pages |
+------+------+------------+--------------------+
|    1 | John | 2007-01-24 |                250 |
|    2 | Ram  | 2007-05-27 |                220 |
|    3 | Jack | 2007-05-06 |                170 |
|    4 | Jill | 2007-04-06 |                220 |
|    5 | Zara | 2007-06-06 |                300 |
+------+------+------------+--------------------+

这意味着作为一个包容性的作品。结果数据包括170和300。

在MSSQL中

让“产品”表包含产品数据,包括产品名称,价格等。

ProductID	ProductName	                        Price
1	        Chais		                        18
2	        Chang		                        19
3	        Aniseed Syrup		                10
5	        Chef Anton's Gumbo Mix		        21.35
4	        Chef Anton's Cajun Seasoning            22

如果我们在此表上运行以下查询:

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;

查询产生以下数据,包括在子句中给出的价格。

ProductID	ProductName	         Price
1	        Chais		         18
2	        Chang		         19
3	        Aniseed Syrup		 10

所以在MSSQL之间作为包容就像MySQL一样。

你可以看一下:http://www.tutorialspoint.com/mysql/mysql-between-clause.htm

和这个

http://www.w3schools.com/sql/sql_between.asp