我正在使用heidiSQL查询多个数据库,并且在调整SELECT子句时获得了不同的结果。
当我执行以下查询时,数据库返回501条记录:
select *
from klantcontact
inner join (
select top 448 ks.FIRNR,ROW_NUMBER() OVER(ORDER BY FIRNR DESC) as rownum
from klant ks) res
on klantcontact.KLANR = res.FIRNR
我实际上只需要两列。但是当我运行以下查询时,我得到526条记录作为结果(仅更改了select子句):
select klantcontact.NAAM
from klantcontact
inner join (
select top 448 ks.FIRNR,ROW_NUMBER() OVER(ORDER BY FIRNR DESC) as rownum
from klant ks) res
on klantcontact.KLANR = res.FIRNR
我认为这与“ OVER”有关?
答案 0 :(得分:0)
在子查询中,您指定了top 448,但没有在末尾指定任何order by子句。因此,每次运行查询时,返回的448行都有可能不同,从而每次给出的行数都不相同。
将查询更改为以下内容之一:
select klantcontact.NAAM
from klantcontact
inner join (
select top 448 ks.FIRNR,ROW_NUMBER() OVER(ORDER BY FIRNR DESC) as rownum
from klant ks order by ks.FIRNR) res
on klantcontact.KLANR = res.FIRNR
或删除顶部的448子句。