以下是一种不使用ROW_NUMBER()或RANK()函数来获取每个组的第一个记录的解决方法:
SELECT t1.*
FROM your_table t1
LEFT JOIN your_table t2 ON t1.group_id = t2.group_id AND t1.id > t2.id
WHERE t2.id IS NULL;
这个查询使用了自连接,通过将表与自身进行连接,并通过比较id值来筛选出每个组中的第一个记录。首先,我们将表与自身连接,使用条件t1.group_id = t2.group_id来匹配相同组的记录。然后,我们使用条件t1.id > t2.id来筛选出id值较小的记录。最后,我们使用WHERE t2.id IS NULL来排除那些有更小id值的记录,只保留每个组中的第一个记录。