当前位置: 首页 > 面试题库 >

mysql中的GROUP BY特性

朱自明
2023-03-14
问题内容

关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。

想改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。

7年前关闭。

改善这个问题

我有以下SQL表和此sqlfiddle中所示的查询:http
://sqlfiddle.com/#!2/37eda/1/0 。

当前结果如下所示:

id  definition_id   service_id  provider_id amount
2       1               25              24  200.00
3       1               NULL            24  300.00
20      3               25              24  700.00
30      4               NULL            24  800.00

我需要将查询限制为definition_id每个条目仅显示一个。如果有两个definition_id,则应将其与非NULL
service_id一起使用。正确的结果应该是:

id  definition_id   service_id  provider_id amount
2       1               25              24  200.00
20      3               25              24  700.00
30      4               NULL            24  800.00

什么是正确的SQL查询?


问题答案:

尝试用子选择先对它们进行排序,然后对它们进行分组,正常group by将使用记录的第一个出现位置,因此使其像first,ORDER BY service_id DESC然后使用group by

SELECT t.* FROM (
select * from billing_billingmatrix 
where (provider_id=24 
or provider_id is null) 
and (service_id=25 or service_id is null)
ORDER BY service_id DESC
  ) t GROUP BY t.definition_id

小提琴



 类似资料:
  • 1)使用的第一个查询...大约用了23秒 目前我修改了查询..这需要大约9秒 我不确定要做的表演是什么?我希望这个查询是快速的..我尝试索引rid和id,但这仍然使查询变得更糟。 下面是表格的详细信息 mza_movie_upload MZA_Movie_Statics

  • 本文向大家介绍讲解MySQL中的事务特性,包括了讲解MySQL中的事务特性的使用技巧和注意事项,需要的朋友参考一下 一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行。换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的。如果在事务的任何操作失败,则整个事务将失败。 实际上,会俱乐部许多SQL查询到一个组中,将执行所有的人都一起作为事务的一部分。 事务的特性: 事务有

  • 与MySQL 5.6 相比,MySQL 5.7 具有以下几个方面的新功能。 1) 随机 root 密码 MySQL 5.7 数据库初始化完成后,会自动生成一个 root@localhost 用户,root 用户的密码不为空,而是随机产生一个密码。 2) 自定义 test 数据库 MySQL 5.7 默认安装完成后没有 test 数据库。用户可以自行创建 test 数据库并对其进行权限控制。 3)

  • 问题内容: 我在数据库中有包含特殊字符的单词(大多数情况下为西班牙语,如波浪号)。在数据库中,所有内容均已保存并使用PHPmyAdmin正确显示,但是当我获取数据(使用PHP)并将其显示在浏览器中时,我得到了一个奇怪的字符,例如“?”。用一个正方形…我需要一个一般性的修补程序,因此我不必每次都转义每个字符,而且我还可以将PHP表单中的特殊西班牙字符插入数据库中… HTML是正确的: 所有表和数据库

  • 任何groupby操作都涉及对原始对象的以下操作之一。 他们是 - Splitting对象 Applying功能 Combining结果 在许多情况下,我们将数据分成几组,并在每个子集上应用一些功能。 在应用功能中,我们可以执行以下操作 - Aggregation - 计算摘要统计 Transformation - 执行某些特定于组的操作 Filtration - 在某些条件下丢弃数据 现在让我们

  • groupBy 将源 Observable 分解为多个子 Observable,并且每个子 Observable 将源 Observable 中“相似”的元素发送出来 groupBy 操作符将源 Observable 分解为多个子 Observable,然后将这些子 Observable 发送出来。 它会将元素通过某个键进行分组,然后将分组后的元素序列以 Observable 的形态发送出来。