问题1)我浏览了很多网站,无法理解Group by
和Order by
的明显区别谁能帮我举个例子
问题2)像这样的一个示例查询
例如:—select A.sno , A.sname from Names A;
查询结果与下同select sno , sname from Names ;
A
和圆点A.
以及我们所说的这个概念
帮助我从这两个问题使用示例或链接
简单来说,
-
GROUP BY
将相似值分组(删除重复值)。ORDER BY
指定结果中所需的数据顺序。,
假设表包含:
id name mark 1 Jacob 50 2 Mary 60 3 Amanda 30
然后,
select * from tableName order by mark
给出结果:id name mark 3 Amanda 30 1 Jacob 50 2 Mary 60
-
在
Names A
中,为了方便,我们给出了一个别名(或更短的名称)。
在你的问题1中,Group by是将具有相同值的字段分组。它在计算东西时很有用。例如,表名为'Table1':
-----
|id |
-----
|1 |
-----
|1 |
-----
|2 |
-----
使用这个查询:
SELECT id, COUNT(id) AS `count` FROM Table1 GROUP BY id
它将导致:
------------
|id |count |
------------
|1 |2 |
------------
|2 |1 |
------------
关于Order By,它只是按顺序对数据进行排序。假设你有一个名为'Table2'的表:
------------
| Alphabet |
------------
| C |
------------
| A |
------------
| D |
------------
| B |
------------
`SELECT * FROM Table2 ORDER BY Alphabet` will result to:
| Alphabet |
------------
| A |
------------
| B |
------------
| C |
------------
| D |
------------
在问题2中,'A'是给表名的别名。如果您必须连接如此多的表(特别是如果它们有很长的名称),它是有用的。所以不是:
SELECT Table1.*, Table2.* FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id
你必须这样做:
SELECT A.*, B.* FROM Table1 A INNER JOIN Table2 B ON A.id = B.id
您只需要键入一次真实的表名,并在condition中使用它们的别名。想象一下,如果你必须连接3个或更多的表而不使用别名-这是一个麻烦。
对,你不应该把这两者混淆。
1) GROUP BY
将您的结果与您指定的列分组
- group by - w3schools
的例子:
SELECT Name, surname FROM CONTACT GROUP BY Surname
将导致相同姓氏的联系人分组(所有smiths在一起等)
ORDER BY
将简单地按指定列排序(对于字符排序从a-z开始,对于整数从1-9999开始)
- ORDER BY - W3SCHOOLs
的例子:
SELECT A.Name, cellphone from Contact A order by Name
将根据名称按字母顺序排列结果(顺便说一句,添加DESC
将以降序方式反转结果,默认默认为升序的ASC
)
2)然后你问别名,这使你能够给表名或列自己的别名,并在从表中选择列时重用它,这对于长表名或类似的列名出现在多个表名时很有用。
的例子:
SELECT A.Name AS CustomerName, C.Name AS Company
FROM Contact A
JOIN Company C on C.contactid = A.contactid
(我为表contact创建了别名A, Company C,并将两个表中相似的列重新命名为别名customername, Company )
这有帮助吗?
ORDER BY:按照指定的排序方式检索上述列的数据。排序有升序和降序之分。默认为升序。
Group By:是selectexpression中按列将结果划分为子集的部分
GroupBy是一个积分函数,对group by进行分组后,得到一个总和。
OrderBy只是一个简单的函数,你仍然会得到你之前查询的结果,但是它们是根据你的选择"排序"的。