Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql server中模棱两可的列名_Sql - Fatal编程技术网

sql server中模棱两可的列名

sql server中模棱两可的列名,sql,Sql,您好,我有一个含糊不清的列名在m存储过程的付款。出价id有人可以帮助解决这个问题,请 SET NOCOUNT ON; SELECT ROW_NUMBER() OVER ( ORDER BY [PaymentID] ASC )AS RowNumber ,[PaymentID] ,[Name] ,[WinningPrice] ,[PaymentDate] ,[Payment.BidID] INTO #Results FROM Item INNER JO

您好,我有一个含糊不清的列名在m存储过程的付款。出价id有人可以帮助解决这个问题,请

  SET NOCOUNT ON;
  SELECT ROW_NUMBER() OVER
  (
  ORDER BY [PaymentID] ASC
  )AS RowNumber
  ,[PaymentID]
  ,[Name]
  ,[WinningPrice]
  ,[PaymentDate]
   ,[Payment.BidID]
 INTO #Results
 FROM  Item INNER JOIN
                         Auction ON Item.ItemID = Auction.ItemID INNER JOIN
                         BID ON Auction.AuctionID = BID.AuctionID INNER JOIN
                         Payment ON BID.BidID = Payment.BidID
                         Where   (BID.Status = 'Paid') AND (BID.BuyerID = @buyer)

  SELECT @RecordCount = COUNT(*)
  FROM #Results

  SELECT * FROM #Results
  WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1

  DROP TABLE #Results
End

尝试此操作,为不明确的列名创建别名

 SET NOCOUNT ON;
  SELECT ROW_NUMBER() OVER
  (
  ORDER BY [PaymentID] ASC
  )AS RowNumber
  ,[PaymentID]
  ,[Name]
  ,[WinningPrice]
  ,[PaymentDate]
   ,[Payment.BidID] as PBidID
 INTO #Results
 FROM  Item INNER JOIN
                         Auction ON Item.ItemID = Auction.ItemID INNER JOIN
                         BID ON Auction.AuctionID = BID.AuctionID INNER JOIN
                         Payment ON BID.BidID = Payment.BidID
                         Where   (BID.Status = 'Paid') AND (BID.BuyerID = @buyer)

  SELECT @RecordCount = COUNT(*)
  FROM #Results

  SELECT * FROM #Results
  WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1

  DROP TABLE #Results
End

您在查询中使用的列名可在多个表中使用

如果没有表结构,我们无法确定它是哪一个,但可能是查询中有别名的:

,[PaymentID]
,[Name]
,[WinningPrice]
,[PaymentDate]
希望这有帮助


突出显示了我更改的行

良好做法是使用别名,如:

SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
    (
        ORDER BY i.[PaymentID] ASC  --which table it belongs? put correct alias
    )AS RowNumber
    ,i.[PaymentID]                  
    ,i.[Name]
    ,i.[WinningPrice]
    ,i.[PaymentDate]
    ,p.[BidID]
INTO #Results
FROM  Item i
INNER JOIN Auction a 
    ON i.ItemID = a.ItemID 
INNER JOIN  BID b
    ON a.AuctionID = b.AuctionID 
INNER JOIN Payment p 
    ON b.BidID = p.BidID
Where   (b.Status = 'Paid') 
        AND (b.BuyerID = @buyer)

SELECT @RecordCount = COUNT(*)
FROM #Results

在您的选择中尝试过TableName.ColumnName吗?您在
[Payment.BidID]
上没有遇到错误吗?是@IdanArye我遇到了错误there@Mathias是的,我试过这个,你有没有试过[Payment].[BidID]或者像大多数人建议的那样使用别名
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
    (
        ORDER BY i.[PaymentID] ASC  --which table it belongs? put correct alias
    )AS RowNumber
    ,i.[PaymentID]                  
    ,i.[Name]
    ,i.[WinningPrice]
    ,i.[PaymentDate]
    ,p.[BidID]
INTO #Results
FROM  Item i
INNER JOIN Auction a 
    ON i.ItemID = a.ItemID 
INNER JOIN  BID b
    ON a.AuctionID = b.AuctionID 
INNER JOIN Payment p 
    ON b.BidID = p.BidID
Where   (b.Status = 'Paid') 
        AND (b.BuyerID = @buyer)

SELECT @RecordCount = COUNT(*)
FROM #Results