如何用SELECT获取首个匹配组合值为1其余同组合值为0的结果
解决方案:标记每组首个匹配组合为1,其余为0
假设你所说的“相同匹配组合”是指表中某几个字段的组合(比如field_a、field_b,请根据实际表结构替换为对应字段),可以通过窗口函数ROW_NUMBER()实现需求:
SELECT *, CASE WHEN ROW_NUMBER() OVER (PARTITION BY field_a, field_b ORDER BY (SELECT NULL)) = 1 THEN 1 ELSE 0 END AS is_first_match FROM tableInfo;
关键说明:
PARTITION BY field_a, field_b:指定分组依据,将相同字段组合的行归为一组,替换成你实际用来判断“匹配组合”的字段即可。ORDER BY (SELECT NULL):如果不需要按特定顺序选取首个匹配项,用此语法即可;若需要按某字段(如ID、创建时间)排序来确定首个,替换为实际字段,例如ORDER BY create_time ASC。CASE逻辑:对每组内的第一行标记为1,其余行标记为0。
内容的提问来源于stack exchange,提问作者Chaya
相关产品推荐
相关产品推荐

