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