在一次采访中,我要求在不使用CTE,top,sub查询的情况下找到第n个最高工资。我很迷惑。还有其他办法吗。
另一个问题, 2个表具有与Identity ID列相同的列。将记录从table1复制到table2时,也应移动ID值。例如,如果具有ID 1,3,5,7 ..的table1应将相同的ID值移动到table2 ID列。
答案 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