上次我們介紹了:適合初學者的MySQL學習筆記之SELECT語句使用詳解,本次我們介紹一些適合初學者的MySQL學習筆記之ORDER BY子句的使用,接下來就讓我們一起來了解一下這部分內容吧。
用ORDER BY子句排序結果
ORDER BY子句按一個或多個最多16個)字段排序查詢結果,可以是升序ASC)也可以是降序DESC),缺省是升序。ORDER子句通常放在SQL語句的最後。 ORDER子句中定義了多個字段,則按照字段的先後順序排序。
例:
- SELECT ProductName,UnitPrice, UnitInStock
- FROM Products
- ORDER BY UnitInStock DESC , UnitPrice DESC, ProductName
ORDER BY 子句中可以用字段在選擇列表中的位置號代替字段名,可以混合字段名和位置號。
例:下面的語句產生與上列相同的效果。
- SELECT ProductName,UnitPrice, UnitInStock
- FROM Products
- ORDER BY 1 DESC , 2 DESC,3
運用連接關系實現多表查詢
例:找出同一個城市中供應商和客戶的名字
- SELECT Customers.CompanyName, Suppliers.ComPany.Name
- FROM Customers, Suppliers
- WHERE Customers.City=Suppliers.City
例:找出產品庫存量大於同一種產品的定單的數量的產品和定單
- SELECT ProductName,OrderID, UnitInStock, Quantity
- FROM Products, [Order Deails]
- WHERE Product.productID=[Order Details].ProductID
- AND UnitsInStock>Quantity
另一種方法是用 Microsof JET SQL 獨有的JNNER JOIN
語法:
- FROM table1 INNER JOIN table2
- ON table1.field1 comparision table2.field2
其中comparision 就是前面WHERE子句用到的比較運算符。
- SELECT FirstName,lastName,OrderID,CustomerID,OrderDate
- FROM Employees
- INNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID
注意:
INNER JOIN不能連接Memo OLE Object Single Double 數據類型字段。
在一個JOIN語句中連接多個ON子句,語法:
- SELECT fields
- FROM table1 INNER JOIN table2
- ON table1.field1 compopr table2.field1 AND
- ON table1.field2 compopr table2.field2 OR
- ON table1.field3 compopr table2.field3
也可以
- SELECT fields
- FROM table1 INNER JOIN
- table2 INNER JOIN [( ]table3
- [INNER JOER] [( ]tablex[INNER JOIN]
- ON table1.field1 compopr table2.field1
- ON table1.field2 compopr table2.field2
- ON table1.field3 compopr table2.field3
外部連接返回更多記錄,在結果中保留不匹配的記錄,不管存不存在滿足條件的記錄都要返回另一側的所有記錄。
- FROM table [LEFT|RIGHT]JOIN table2
- ON table1.field1comparision table.field2
用左連接來建立外部連接,在表達式的左邊的表會顯示其所有的數據
例:不管有沒有定貨量,返回所有商品
- SELECT ProductName ,OrderID
- FROM Products
- LEFT JOIN Orders ON Products.PrductsID=Orders.ProductID
右連接與左連接的差別在於:不管左側表裡有沒有匹配的記錄,它都從左側表中返回所有記錄。
例:如果想了解客戶的信息,並統計各個地區的客戶分布,這時可以用一個右連接,即使某個地區沒有客戶,也要返回客戶信息。
空值不會相互匹配,可以通過外連接才能測試被連接的某個表的字段是否有空值。
- SELECT *
- FROM talbe1
- LEFT JOIN table2 ON table1.a=table2.c
分組和總結查詢結果
在SQL的語法裡,GROUP BY和HAVING子句用來對數據進行匯總。GROUP BY子句指明了按照哪幾個字段來分組,而將記錄分組後,用HAVING子句過濾這些記錄。
GROUP BY子句的語法:
- SELECT fidldlist
- FROM table
- WHERE criteria
- [GROUP BY groupfieldlist [HAVING groupcriteria]]
注意:Microsoft Jet數據庫 Jet 不能對備注或OLE對象字段分組。GROUP BY字段中的Null值以備分組但是不能被省略。 在任何SQL合計函數中不計算Null值。 GROUP BY子句後最多可以帶有十個字段,排序優先級按從左到右的順序排列。
例:在‘WA’地區的雇員表中按頭銜分組後,找出具有同等頭銜的雇員數目大於1人的所有頭銜。
- SELECT Title ,Count(Title) as Total
- FROM Employees
- WHERE Region = ‘WA’
- GROUP BY Title
- HAVING Count(Title)>1
關於適合初學者的MySQL學習筆記之ORDER BY子句使用方法就介紹到這裡了,希望本次的介紹能夠對您有所收獲!