Sql server SQL Server分页与联接-不明确的列名';id';
我在修复一个查询时遇到了问题,这个查询通常在没有联接的情况下使用,但现在我想联接两个表,我发现一个错误是列名称id不明确 SQLSTATE[42000]:[Microsoft][SQL Server本机客户端11.0][SQL Server]列名“id”不明确。1 我使用的代码:Sql server SQL Server分页与联接-不明确的列名';id';,sql-server,join,pagination,Sql Server,Join,Pagination,我在修复一个查询时遇到了问题,这个查询通常在没有联接的情况下使用,但现在我想联接两个表,我发现一个错误是列名称id不明确 SQLSTATE[42000]:[Microsoft][SQL Server本机客户端11.0][SQL Server]列名“id”不明确。1 我使用的代码: SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY id desc) AS RowNumber,
SELECT * FROM
(SELECT ROW_NUMBER() OVER(ORDER BY id desc)
AS RowNumber,
d.id as iddr, d.EGN, d.Names, d.NickName, d.Residence, d.PersonalMobilePhone, d.HomeAddress,d.GarantPerson, d.InsertDate,
t.id, t.PossitionName,
de.id, de.IdDriver, de.IdPAFirms,de.IdPossition
FROM dbo.Driver d
FULL JOIN dbo.DriversEmployed de ON d.id = de.IdDriver
FULL JOIN dbo.CompanyPossitions t ON de.IdPossition = t.id)
AS TEST
WHERE RowNumber BETWEEN ? AND ? + 1
如果我只尝试加入管理SQL studio,那么代码将成功加入。所以我想麻烦就在这里,orderbyid子句
有没有办法在这个查询中使用JOIN?
谢谢大家! 您的
Driver
和CompanyPositions
表都有id
列,使得名称id
不明确。您应该在order by
子句中对其进行完全限定。例如:
ORDER BY t.id
在您的
行号
功能中:
ROW_NUMBER() OVER (ORDER BY id DESC) AS RowNumber
您需要通过在列id
前面加上适当的表别名来指示它来自哪个表,即
ROW_NUMBER() OVER (ORDER BY d.id DESC) AS RowNumber
此外,您需要为类似的列指定不同的列别名:
SELECT *
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY d.id DESC) AS RowNumber,
d.id AS iddr, -- Here
d.EGN,
d.Names,
d.NickName,
d.Residence,
d.PersonalMobilePhone,
d.HomeAddress,
d.GarantPerson,
d.InsertDate,
t.id AS CompanyPossitionsId, -- Here
t.PossitionName,
de.id AS DriversEmployedId, -- Here
de.IdDriver,
de.IdPAFirms,
de.IdPossition
FROM dbo.Driver d
FULL JOIN dbo.DriversEmployed de
ON d.id = de.IdDriver
FULL JOIN dbo.CompanyPossitions t
ON de.IdPossition = t.id
) AS TEST
WHERE
RowNumber BETWEEN ? AND ? + 1
您需要在
行(按id DESC排序)上方的id
前面加上正确的表别名。
。谢谢,我尝试了此操作,但出现了其他错误:SQLSTATE[42000]:[Microsoft][SQL Server Native Client 11.0][SQL Server]列“id”已多次为“TEST”指定。1谢谢,我尝试了此操作,但出现了其他错误:SQLSTATE[42000]:[Microsoft][SQL Server Native Client 11.0][SQL Server]为“测试”多次指定了列“id”。1谢谢,现在我明白了。