我有一个查询
SELECT bk_publisher, bk_price FROM books
GROUP BY bk_price, bk_publisher
和
SELECT bk_publisher ,bk_price FROM books
两者都返回相同的结果。意味着我的表中有 12 条记录,两个查询都返回 12 条记录。有什么区别 ?虽然我使用的是 group by,它与聚合函数一起使用。但我想知道这里有什么不同吗?
SELECT bk_publisher, bk_price FROM books
GROUP BY bk_price, bk_publisher
即使您的表包含重复数据,也会产生不同的(出版商、价格)对。
SQL group by帮助您按某个相同的值对不同的结果进行分组(对其他值使用聚合函数)
在您的情况下,它没有任何意义,但是当您想要基于相同字段聚合值时,您可以使用 group by。
例如,如果您想获得发布商的最高价格:
SELECT bk_publisher, max(bk_price) FROM books
GROUP BY bk_publisher
GROUP BY 语句用于按一个或多个列对结果集进行分组。当您有重复数据并且希望每个条目有一条记录时,使用分组依据。
当您使用时,它会挤压在输出中作为单行GROUP BY
列出的具有相同列的多行。GROUP BY
这也意味着通常,SELECT
列表中提到的所有其他列都必须包装在聚合函数中,如sum()
, avg()
,count()
等。
一些 SQL 引擎(如 MySQL)允许不使用聚合,但许多人认为这是一个错误。
GROUP BY子句显然没有效果,因为没有重复的bk_price, bk_publisher
值组合。