更新查询将不会运行

时间:2013-02-20 08:58:49

标签: tsql sql-update

当我运行下面的查询(第一个代码)时,我根据数据库中的当前到达日期获得了137万个随机出发日期,这是个好消息。但是,当我尝试使用第二代码查询更新数据库时,我收到一条错误消息(见下文),我不知道为什么。你能帮我吗?

  

消息116,级别16,状态1,行5只能有一个表达式   在未引入子查询时在选择列表中指定   存在。

第一个代码

SELECT ArrivalDate, DATEADD(day, 1 + RAND(checksum(NEWID()))
* LengthOfStay.LengthofStay, ArrivalDate) AS DepartureDate    
FROM Bookings, LengthOfStay
ORDER BY ArrivalDate

第二段代码

USE Occupancy
Update Bookings
Set DepartureDate = (SELECT ArrivalDate, DATEADD(day, 1 + RAND(checksum(NEWID()))*1.5
* LengthOfStay.LengthofStay, ArrivalDate))
FROM LengthOfStay, Bookings

2 个答案:

答案 0 :(得分:1)

你有几个问题:

  • LengthOfStay, Bookings是一个CROSS JOIN(笛卡尔积):这是打算
  • 您有来自子查询的2列但是只尝试更新一列

假设您打算使用CROSS JOIN,则不需要子查询

UPDATE
   B
SET
   DepartureDate = DATEADD(day,
                           1 + RAND(checksum(NEWID()))*1.5 * L.LengthofStay,
                          B.ArrivalDate)
FROM
   LengthOfStay L, Bookings B

答案 1 :(得分:0)

您似乎正在选择2列来更新1列(DepartureDate)