• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

纯SQL技术的自动编号的结果行集

sql 来源:Daniel Spiewak 4次浏览

我正在寻找一种方式来依次在结果的行数设置(不是表)。从本质上讲,我开始用类似下面的查询:纯SQL技术的自动编号的结果行集

SELECT id, name FROM people WHERE name = 'Spiewak' 

id s为显然不是一个真正的序列(例如,1, 2, 3, 4)。我需要的是包含这些自动编号的结果集中的另一列。如果必须的话,我愿意使用SQL函数,但我宁愿不使用ANSI规范中的扩展。

平台是MySQL,但是该技术应该是跨平台的,如果在所有可能的(因此避免非标准扩展的愿望)。

===========解决方案如下:

有你需要订购您的结果有意义的行号。该子查询的WHERE子句需要在WHERE子句或从主查询的ORDER BY主查询的主键匹配

SELECT id, name 
    , (SELECT COUNT(*) FROM people p2 WHERE name='Spiewak' AND p2.id <= p1.id) AS RowNumber 
FROM people p1 
WHERE name = 'Spiewak' 
ORDER BY id 

注:然后你就可以做这样的事情。

SQL Server具有ROW_NUMBER()OVER构造简化,但我不知道如果MySQL有什么特别的东西来解决它。


因为我的岗位在这里被接受的答案,我想还叫出丹Goldstein的反应,这是在方法上非常相似,但采用的是JOIN,而不是一个子查询,常常会表现得更好


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)