程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 適合初學者的MySQL學習筆記之ORDER BY子句使用詳解

適合初學者的MySQL學習筆記之ORDER BY子句使用詳解

編輯:MySQL綜合教程

上次我們介紹了:適合初學者的MySQL學習筆記之SELECT語句使用詳解,本次我們介紹一些適合初學者的MySQL學習筆記之ORDER BY子句的使用,接下來就讓我們一起來了解一下這部分內容吧。

用ORDER BY子句排序結果

ORDER BY子句按一個或多個最多16個)字段排序查詢結果,可以是升序ASC)也可以是降序DESC),缺省是升序。ORDER子句通常放在SQL語句的最後。 ORDER子句中定義了多個字段,則按照字段的先後順序排序。

例:

  1. SELECT ProductName,UnitPrice, UnitInStock   
  2. FROM Products   
  3. ORDER BY UnitInStock DESC , UnitPrice DESC, ProductName  

ORDER BY 子句中可以用字段在選擇列表中的位置號代替字段名,可以混合字段名和位置號。

例:下面的語句產生與上列相同的效果。

  1. SELECT ProductName,UnitPrice, UnitInStock   
  2. FROM Products   
  3. ORDER BY 1 DESC , 2 DESC,3 

運用連接關系實現多表查詢

例:找出同一個城市中供應商和客戶的名字

  1. SELECT Customers.CompanyName, Suppliers.ComPany.Name   
  2. FROM Customers, Suppliers   
  3. WHERE Customers.City=Suppliers.City  

例:找出產品庫存量大於同一種產品的定單的數量的產品和定單

  1. SELECT ProductName,OrderID, UnitInStock, Quantity   
  2. FROM Products, [Order Deails]   
  3. WHERE Product.productID=[Order Details].ProductID   
  4. AND UnitsInStock>Quantity  

另一種方法是用 Microsof JET SQL 獨有的JNNER JOIN

語法:

  1. FROM table1 INNER JOIN table2   
  2. ON table1.field1 comparision table2.field2  

其中comparision 就是前面WHERE子句用到的比較運算符。

  1. SELECT FirstName,lastName,OrderID,CustomerID,OrderDate   
  2. FROM Employees   
  3. INNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID 

注意:
INNER JOIN不能連接Memo OLE Object Single Double 數據類型字段。

在一個JOIN語句中連接多個ON子句,語法:

  1. SELECT fields   
  2. FROM table1 INNER JOIN table2   
  3. ON table1.field1 compopr table2.field1 AND   
  4. ON table1.field2 compopr table2.field2 OR   
  5. ON table1.field3 compopr table2.field3  

也可以

  1. SELECT fields   
  2. FROM table1 INNER JOIN   
  3. table2 INNER JOIN [( ]table3   
  4. [INNER JOER] [( ]tablex[INNER JOIN]   
  5. ON table1.field1 compopr table2.field1   
  6. ON table1.field2 compopr table2.field2   
  7. ON table1.field3 compopr table2.field3  

外部連接返回更多記錄,在結果中保留不匹配的記錄,不管存不存在滿足條件的記錄都要返回另一側的所有記錄。

  1. FROM table [LEFT|RIGHT]JOIN table2   
  2. ON table1.field1comparision table.field2 

用左連接來建立外部連接,在表達式的左邊的表會顯示其所有的數據

例:不管有沒有定貨量,返回所有商品

  1. SELECT ProductName ,OrderID   
  2. FROM Products   
  3. LEFT JOIN Orders ON Products.PrductsID=Orders.ProductID  

右連接與左連接的差別在於:不管左側表裡有沒有匹配的記錄,它都從左側表中返回所有記錄。

例:如果想了解客戶的信息,並統計各個地區的客戶分布,這時可以用一個右連接,即使某個地區沒有客戶,也要返回客戶信息。
空值不會相互匹配,可以通過外連接才能測試被連接的某個表的字段是否有空值。

  1. SELECT *   
  2. FROM talbe1   
  3. LEFT JOIN table2 ON table1.a=table2.c  

分組和總結查詢結果

在SQL的語法裡,GROUP BY和HAVING子句用來對數據進行匯總。GROUP BY子句指明了按照哪幾個字段來分組,而將記錄分組後,用HAVING子句過濾這些記錄。

GROUP BY子句的語法:

  1. SELECT fidldlist   
  2. FROM table   
  3. WHERE criteria   
  4. [GROUP BY groupfieldlist [HAVING groupcriteria]]  

注意:Microsoft Jet數據庫 Jet 不能對備注或OLE對象字段分組。GROUP BY字段中的Null值以備分組但是不能被省略。 在任何SQL合計函數中不計算Null值。 GROUP BY子句後最多可以帶有十個字段,排序優先級按從左到右的順序排列。

例:在‘WA’地區的雇員表中按頭銜分組後,找出具有同等頭銜的雇員數目大於1人的所有頭銜。

  1. SELECT Title ,Count(Title) as Total   
  2. FROM Employees   
  3. WHERE Region = ‘WA’   
  4. GROUP BY Title   
  5. HAVING Count(Title)>1 

關於適合初學者的MySQL學習筆記之ORDER BY子句使用方法就介紹到這裡了,希望本次的介紹能夠對您有所收獲!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved