我正在尝试使用SQL Server 2005中的左联接进行更新查询,但是由于某种原因,它不起作用。
我的SQL语句是这样的:
UPDATE [tblSlots]
SET [tblSlots].[PublishedStartTime] = '10:00'
FROM tblSlots
LEFT JOIN tblDays ON tblSlots.SlotDayID = tblDays.DayID
WHERE tblDays.Published = 1
如果我取出LEFT JOIN
行,然后仅过滤例如tblSlots.SlotID
,则更新正常。
但是我希望能够在所有发布的日期一次更新广告位。
(我只是作为JOIN尝试过,但是那也不起作用...)
我确定这是非常明显的事情...
感谢您的帮助!
克里斯
答案 0 :(得分:0)
尝试“拥有”而不是“哪里”
答案 1 :(得分:0)
您可以尝试:
UPDATE [tblSlots]
SET [tblSlots].[PublishedStartTime] = '10:00'
FROM [tblSlots] ,
(
SELECT DayID FROM
[tblSlots]
LEFT JOIN tblDays
ON tblSlots.SlotDayID = tblDays.DayID
WHERE tblDays.Published = 1
) AS [Data_Days]
WHERE
[Data_Days].DayId = [tblSlots].SlotDayID
答案 2 :(得分:0)
您的查询语法对我来说看起来不错,就像您所说的那样,它可以正常运行,直到您尝试进行更新。这是一个黑暗的镜头,但是如果问题在于在从多个表中进行选择时进行更新,则可能只是更改查询以不加入tblDays即可。
UPDATE [tblSlots]
--SET [tblSlots].[PublishedStartTime] = '10:00'
SET [tblSlots].[PublishedStartTime] = (select SomeValue from tblDays where DayID = SlotDayID) --If a value is needed from Day table
FROM tblSlots
Where SlotDayID in (select DayID from tblDays WHERE Published = 1 and DayID is not null)