python - 使用python和pymssql在一系列rownumbers之间获取行

时间:2017-10-20 19:21:21

标签: python sql pymssql

我想使用python包pymssql从数据库中获取特定范围的行号。我使用的代码似乎无法正常工作

# connection details to SQL
con = pymssql.connect("some connection credentials")

df = pd.read_sql("""SELECT
            [col1], 
            [col2],
            WHERE rownum 
            BETWEEN 0 AND 1000""", 
            con = con)

它显示以下错误:

(207, "Invalid column name 'rownum'.DB-Lib error message 20018, severity
16:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib
error message 20018, severity 16:\nGeneral SQL Server error: Check 
messages from the SQL Server\n")

我做错了什么?这不是连接问题,如果我选择前1000行,它可以完美运行。

1 个答案:

答案 0 :(得分:1)

看起来您想要使用ROW_NUMBER()窗口函数,您可以使用与此类似的查询来执行此操作:

sql = """\
SELECT [id], [txtcol] 
FROM 
    (
        SELECT [id], [txtcol], ROW_NUMBER() OVER (ORDER BY id) AS [rownum]
        FROM test10k
    ) AS subquery
WHERE [rownum] BETWEEN 2 AND 4
"""
crsr.execute(sql)