SQL 之 基于行的逻辑

来源:互联网 发布:淘宝商品软文范例 编辑:程序博客网 时间:2024/06/05 08:21

关键字: WHERETOP/LIMIT/ROWNUM

 

1. 应用查询条件

SELECT columnlist

FROM tablelist

WHERE condition

ORDER BY columnlist

 

PSWHERE子句必须总在FROMORDER BY之间。事实上,任何子句都必须按这个顺序,ORDER BY是最后的。

 

示例一

SELECT

FirstName,

LastName,

QuantityPurchased

FROM Orders

WHERE LastName = Harper

 

输出

FirstName   LastName    QuantityPurchased

---------------------------------------------------

Brenda      Harper       5

 

字符列的值要用单引号’’括起,如果是数字字段则不用。

 

2. WHERE子句操作符

比如示例一WHERE子句的等号=用作操作符:表对相等性的判断。

相等 = 、不相等 <>、大于>、小于<、大于或等于>=、小于或等于<=

SELECT

FirstName,

LastName,

FROM Orders

WHERE LastName > K

ORDER BY FirstName

结果

FirstName   LastName

----------------------------

Natalie      Lopez

William      Smith

 

PS:文本大于K即 以L-Z(在K后面) 开头的文本

 

同理,其实这些操作符也可以用在查询格式的CASE语句(简单格式仅仅是相等性判断):

CASE

WHEN column1 > value1 THEN result1

END

 

3. 限制行

不关心返回哪些行,只想看一个子集(看其中的数据是怎样的),这种情况用TOP

TOP关键字:指定想要限制多少行(比如N行)返回,则返回表的前N行。

SELECT

TOP number

columnlist

FROM table

 

SQL Server不同的是:

MySQL使用LIMIT关键字:

SELECT

columnlist

FROM table

LIMIT number

 

OracleROWNUM <= num

SELECT

columnlist

FROM table

WHERE ROWNUM <= number

 

示例二:

SELECT

TOP 10 *

FROM table

返回表的前10行,包含所有列

 

SELECT

TOP 10

column1,

column2

FROM table

返回表的前10行,包含column1,column2

 

PS:不是随机返回N行,而是根据在数据库中的物理存储方式,限定了前N行的数据,

 

4. Sort限制行数

TOP用法:【TOP N查询】TOPORDER BY子句结合使用,可以得到有序的一定数量的行,比如最大的前N行。排序作用。

SELECT

TOP 3

Title AS Book Title,

CurrentMonthSales AS Quantity Sold

FROM Books

ORDER BY CurrentMonthSales DESC

 

得到销量最多的前3名书籍(名字)

如果是只想要某个作者的销量最大的书呢?

SELECT

TOP 1

Title AS Book Title,

CurrentMonthSales AS Quantity Sold

FROM Books

WHERE Author = Shakespare

ORDER BY CurrentMonthSales DESC

 

WHERE子句一定在FROMORDER BY前。

 

Oracle版本的限制行和排序:

SELECT *

FROM

( SELECT

columnlist

FROM table

ORDER BY columnlist DESC )

WHERE ROWNUM <= number

 

先降序排列所有行,再使用RUMNUM来限制行数。

 

0 0
原创粉丝点击