我对 SQL Server 执行查询:
cur.execute(f"""
SELECT
*** нужные мне столбцы ***
FROM (
SELECT *
FROM table_1
OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY
) AS tab_1
JOIN
table_2 tab_2 ON tab_1.id = tab_2.tab_1_id
JOIN
table_3 tab_3 ON tab_2.id = tab_3.tab_2_id
""")
table_data = cur.fetchall()
我假设它将首先从 table_1 中提取第 0 到第 100 行 - 然后根据条件从其余表中选择。执行查询后,我通过将从数据库收到的数据中的唯一值保存到单独的数组中来检查收到了多少数据:
check_route = []
for t in table_data:
if not t[0] in check_route:
check_route.append(t[0])
结果:len(check_route)=> 95...问题是——如果从数据库中选择的条件是 100,为什么是 95?可能是什么原因呢?