SQL中Orderby和GroupBy的区别



问题1)我浏览了很多网站,无法理解Group byOrder by的明显区别谁能帮我举个例子

问题2)像这样的一个示例查询

例如:—select A.sno , A.sname from Names A;查询结果与下同select sno , sname from Names ;

为什么我们用A和圆点A.以及我们所说的这个概念

帮助我从这两个问题使用示例或链接

简单来说,

  1. 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
    
  2. 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只是一个简单的函数,你仍然会得到你之前查询的结果,但是它们是根据你的选择"排序"的。

最新更新