我有以下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一起使用。正确的结果应该是:
definition_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
ORDER BY service_id DESC
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