SQL 之 基于行的逻辑

本文介绍了SQL中基于行的逻辑操作,包括应用查询条件、使用WHERE子句及各种操作符、限制行数的方法如TOP/LIMIT/ROWNUM,并结合ORDER BY进行排序。示例展示了如何选取特定条件的行、如何获取指定数量的行以及如何按销量排序等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关键字: 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来限制行数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值