首页 >数据库 >mysql教程 >如何在 SQL 中将行号分配给不同的值?

如何在 SQL 中将行号分配给不同的值?

Patricia Arquette
Patricia Arquette原创
2024-12-29 20:52:16470浏览

How to Assign Row Numbers to Distinct Values in SQL?

SQL 中使用 Row_Number 的不同行号

SQL 中的不同查询用于从指定列检索唯一值。但是,在某些情况下,不仅需要显示不同的值,还需要显示其相应的行号。为了实现这一点,Row_Number 函数可以与 DISTINCT 关键字结合使用。

在提供的示例中,用户尝试将 DISTINCT 与 Row_Number 结合使用以显示不同的值以及行号:

SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64

但是,此查询仅产生不同的值,类似于以下查询:

SELECT distinct id FROM table WHERE fid = 64

要解决此问题问题,可以使用 DENSE_RANK 函数代替 Row_Number。 DENSE_RANK 将连续的行号分配给不同的值,无论数据中存在任何间隙。

这是更正的查询:

SELECT distinct id, DENSE_RANK() OVER (ORDER BY  id) AS RowNum
FROM table
WHERE fid = 64

此查询将提供所需的结果:不同值的列表按预期具有相应的行号。

以上是如何在 SQL 中将行号分配给不同的值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn