小编典典

mysql中的GROUP BY特性

sql

我有以下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查询?


阅读 197

收藏
2021-04-14

共1个答案

小编典典

尝试用子选择先对它们进行排序,然后对它们进行分组,正常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
2021-04-14