我正在开发一个包含产品,产品变体等的电子商务网站。 我做了一个复杂的查询,抛出了以下结果。
id | product_id | options
----+------------+---------
1 | 1 | 1
2 | 1 | 1
3 | 1 | 1
4 | 1 | 2
5 | 1 | 2
6 | 1 | 3
7 | 1 | 3
8 | 1 | 1
9 | 1 | 4
我需要做的是为每个不同的选项值选择第一条记录。在最后一个例子中,我需要编写一个select语句来返回以下行:
id | product_id | options
----+------------+---------
1 | 1 | 1
4 | 1 | 2
6 | 1 | 3
9 | 1 | 4
select distinct (options,product_id) , id from(
<The query that returns the rows on this question>
) as prodvalues
group by product_id, options;
但没有运气。我真的被困了。 有帮助吗?谢谢!
答案 0 :(得分:2)
以下内容应该给出您要求的结果集,按照显示的方式排序,通过对要为每个组合查看一行的字段进行分组,并在所有匹配行中选择最小id字段:
SELECT MIN(id), product_id, options
FROM ( ... )
GROUP BY product_id, options
ORDER BY product_id, options
答案 1 :(得分:0)
您的查询看起来应该有效。这个产品你想要的吗?
select options, product_id, max(id) as id
from (
<The query that returns the rows on this question>
) prodvalues
group by product_id, options;