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中文网其他相关文章!