SQL查询更新INNER连接表
问题描述:
我用心灵在我的2个表的连接是GuestInfo订房SQL查询更新INNER连接表
select RoomNo, DateStart, DateEnd, GuestFName, GuestMName, GuestLName
from GuestInfo inner join Reservation
on GuestInfo.GuestID = Reservation.GuestID
现在,我想更新内心的连接表
update (select RoomNo, DateStart, DateEnd, GuestFName, GuestMName, GuestLName
from GuestInfo inner join Reservation
on GuestInfo.GuestID = Reservation.GuestID) set EndDate = '1/20/2014'
where GuestFName = 'JAKE'
但这查询错误。这可能吗?
答
根据您的数据库,您应该可以使用类似的东西。
SQL服务器:
update r
set r.DateEnd = '2014-01-20'
from Reservation r
inner join GuestInfo g
on g.GuestID = r.GuestID
where g.GuestFName = 'JAKE'
的MySQL:
update Reservation r
inner join GuestInfo g
on g.GuestID = r.GuestID
set r.DateEnd = '2014-01-20'
where g.GuestFName = 'JAKE'
答
以下语法应该在任何数据库工作:
update reservation
set enddate = '1/20/2014'
where guestid in (select guestId from guestinfo where guestfname = 'Jake')
答
如果我理解正确的话,你可以使用:
update reservation
set EndDate = '1/20/2014'
where GuestID in (select GuestID
from GuestInfo inner join Reservation
on GuestInfo.GuestID = Reservation.GuestID
and GuestFName = 'JAKE')
+0
查看Gordon Linoff的回答,它比我的好! – 2013-02-27 20:18:38
+0
查询语法错误,当您使用IN子句时,您不能在子查询中返回多个列 – 2013-02-27 20:20:47
您无法更新内部联接的结果。您只能更新其中一个基表。如果您使用别名来显示列的来源,这将非常有帮助。 – 2013-02-27 20:13:14
另外,看看这个问题:http://stackoverflow.com/questions/1293330/how-can-i-do-an-update-statement-with-join-in-sql。您使用的是什么RDMS? – Gijs 2013-02-27 20:13:51
什么是确切的错误信息?你正在使用哪些DBMS?甲骨文? Postgres的? – 2013-02-27 20:19:26