在不使用cte,top,subquery的情况下从表中找到第n个最高工资

时间:2018-01-18 09:53:21

标签: sql-server

在一次采访中,我要求在不使用CTE,top,sub查询的情况下找到第n个最高工资。我很迷惑。还有其他办法吗。

另一个问题, 2个表具有与Identity ID列相同的列。将记录从table1复制到table2时,也应移动ID值。例如,如果具有ID 1,3,5,7 ..的table1应将相同的ID值移动到table2 ID列。

2 个答案:

答案 0 :(得分:1)

他正在寻找新功能OFFSET

查询获得第10个薪水

SELECT * FROM dbp.Empsalary AS P
ORDER BY P.salary desc 
OFFSET 9 ROWS
FETCH NEXT 1 ROWS ONLY

注意:这里N -1 = 9

第二:他正在寻找的问题你知道吗SET IDENTITY_INSERT

你必须为第二张表设置IDENTITY_INSERT。

答案 1 :(得分:0)

对于第二个问题,可以通过打开目标表的IDENTITY_INSERT来实现。喜欢这个

CREATE TABLE dbo.TableA
(
    Id INT IDENTITY(1,1),
    Val VARCHAR(50)
)

CREATE TABLE dbo.TableB
(
    Id INT IDENTITY(1,1),
    Val VARCHAR(50)
)

INSERT INTO TableA(Val)
VALUES('ABC'),('HIJ'),('XYZ')


SET IDENTITY_INSERT TableB on
INSERT INTO TableB(Id,Val)
SELECT Id,Val FROM TableA
相关问题