mysql中的GROUP BY特性

时间:2013-12-29 21:14:24

标签: mysql sql select

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

1 个答案:

答案 0 :(得分:1)

尝试使用subselect首先对它们进行分组然后对它们进行分组,普通group by将使用第一次出现的记录,因此将其设为首先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 

Fiddle