ORDER BY关键词用于对结果进行排序。
对行进行分类
ORDER BY子语句用于对行进行排序。
Orders:
Company | OrderNumber |
---|---|
Sega | 3412 |
ABC Shop | 5678 |
W3Schools | 2312 |
W3Schools | 6798 |
实例
以字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company
结果:
Company | OrderNumber |
---|---|
ABC Shop | 5678 |
Sega | 3412 |
W3Schools | 6798 |
W3Schools | 2312 |
实例
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
ELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
结果:
Company | OrderNumber |
---|---|
ABC Shop | 5678 |
Sega | 3412 |
W3Schools | 2312 |
W3Schools | 6798 |
实例
以逆字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
结果:
Company | OrderNumber |
---|---|
W3Schools | 6798 |
W3Schools | 2312 |
Sega | 3412 |
ABC Shop | 5678 |
实例
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
结果:
Company | OrderNumber |
---|---|
W3Schools | 2312 |
W3Schools | 6798 |
Sega | 3412 |
ABC Shop | 5678 |
注意:在以上的结果中有两个相等的公司名称(W3School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为nulls时,情况也是这样的。
——————————————————————————————————————————————————-
AND和OR可在WHERE子语句中把两个或多个条件结合起来。
假如所有列出的条件都成立,AND会显示一行。假如列出的条件中有一个成立,OR操作符会显示一行。
原始的表 (用在例子中的):
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Svendson | Tove | Borgvn 23 | Sandnes |
Svendson | Stephen | Kaivn 18 | Sandnes |
实例
使用AND来显示所有姓为”Tove”并且名为”Svendson”的人:
SELECT * FROM Persons WHERE FirstName='Tove' AND LastName='Svendson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Svendson | Tove | Borgvn 23 | Sandnes |
实例
使用OR来显示所有姓为”Tove”或者名为”Svendson”的人:
SELECT * FROM Persons WHERE firstname='Tove' OR lastname='Svendson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Svendson | Tove | Borgvn 23 | Sandnes |
Svendson | Stephen | Kaivn 18 | Sandnes |
实例
我们也可以把AND和OR结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM Persons WHERE (FirstName='Tove' OR FirstName='Stephen') AND LastName='Svendson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Svendson | Tove | Borgvn 23 | Sandnes |
Svendson | Stephen | Kaivn 18 | Sandnes |
——————————————————————————————————————————————————
IN
假如您已经确定希望返回的确切的值至少属于列中之一,那么可以使用操作符IN。
SELECT column_name FROM table_name WHERE column_name IN (value1,value2,..)
原始的表 (在实例中使用:)
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Nordmann | Anna | Neset 18 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
Svendson | Tove | Borgvn 23 | Sandnes |
实例 1
如需显示名字是”Hansen”或者”Pettersen”的人,请使用下面的SQL:
SELECT * FROM Persons WHERE LastName IN ('Hansen','Pettersen')
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
————————————————————————————————————————————————
BETWEEN … AND
操作符BETWEEN … AND会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2
原始的表 (在实例中使用:)
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Nordmann | Anna | Neset 18 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
Svendson | Tove | Borgvn 23 | Sandnes |
实例 1
如需以字母顺序显示介于”Hansen”(包括)和”Pettersen”(不包括)之间的人,请使用下面的SQL:
SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Nordmann | Anna | Neset 18 | Sandnes |
重要事项:不同的数据库对BETWEEN…AND操作符的处理方式是有差异的。某些数据库会列出介于”Hansen”和”Pettersen”之间的人,但不包括”Hansen”和”Pettersen”;某些数据库会列出介于”Hansen”和”Pettersen”之间并包括”Hansen”和”Pettersen”的人;而另一些数据库会列出介于”Hansen”和”Pettersen”之间的人,包括”Hansen”,但不包括”Pettersen”。所以:请检查你的数据库是如何处理BETWEEN….AND操作符的!
实例 2
如需使用上面的例子显示范围之外的人,请使用NOT操作符:
SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Hansen' AND 'Pettersen'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Pettersen | Kari | Storgt 20 | Stavanger |
Svendson | Tove | Borgvn 23 | Sandnes |
————————————————————————————————————————————————–
通过使用SQL,别名(Alias)可用于列名称和表名称。
列名别名
语法:
SELECT column AS column_alias FROM table
表名称别名
语法:
SELECT column FROM table AS table_alias
实例: 使用一个列名别名
表(Persons):
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Svendson | Tove | Borgvn 23 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
SQL:
SELECT LastName AS Family, FirstName AS Name FROM Persons
结果:
Family | Name |
---|---|
Hansen | Ola |
Svendson | Tove |
Pettersen | Kari |
实例: 使用一个表名称别名
表(Persons):
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Svendson | Tove | Borgvn 23 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
SQL:
SELECT LastName, FirstName FROM Persons AS Employees
结果:
表 Employees:
LastName | FirstName |
---|---|
Hansen | Ola |
Svendson | Tove |
Pettersen | Kari |