在 SQL 中使用 Row_Number 区分具有不同值的行
SQL 中的 DISTINCT 关键字在检索数据时消除重复行方面起着至关重要的作用。但是,当您需要识别列中每个值的唯一出现次数时,这可能还不够。这就是 Row_Number 发挥作用的地方,但它与 DISTINCT 的组合可能很棘手。
相关查询尝试显示 id 列中不同值的行号:
SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum FROM table WHERE fid = 64;
但是,此查询会产生 id 的不同值,而不是每个唯一值的行号。为了达到所需的结果,您可以使用 DENSE_RANK() 函数而不是 DISTINCT:
SELECT DISTINCT id, DENSE_RANK() OVER (ORDER BY id) AS RowNum FROM table WHERE fid = 64;
DENSE_RANK() 将连续的行号分配给不同的值,这与 ROW_NUMBER() 不同,后者将间隙分配给重复的值。通过将 DENSE_RANK() 与 DISTINCT 相结合,您可以检索每个唯一 id 值的行号,为进一步分析或处理提供必要的信息。
以上是如何使用 DENSE_RANK() 获取 SQL 中不同值的行号?的详细内容。更多信息请关注PHP中文网其他相关文章!