我在尝试在sql server中使用UPDATE查询时遇到问题。 这是我的疑问:
UPDATE THEATER
SET SeatsAvailable = SeatsAvailable - 1
FROM THEATER
INNER JOIN CINEMA_SESSION ON CINEMA_SESSION.tid = THEATER.tid
WHERE THEATER.tid = 2 AND CINEMA_SESSION.sid = 2
-tid是剧院的PK -sid是CINEMA_SESSION的pk
当我使用SELECT语句在CINEMA_SESSION.sid = 3中搜索SeatsAvailable时,它也有.tid = 2,它还附带了CINEMA_SESSION.sid = 2的更新值。
我使用的声明就是这个简单的Select语句:
SELECT THEATER.SeatsAvailable as SeatsAvailable FROM THEATER
INNER JOIN CINEMA_SESSION ON CINEMA_SESSION.tid = THEATER.tid
WHERE CINEMA_SESSION.sid = 3 AND THEATER.tid = 2
这里我想在UPDATE查询中指定THEATER.tid,但是在不同的CINEMA_SESSION.sid中,SeatsAvailable应该保持不变。
答案 0 :(得分:0)
update语句在Theater表上递减了tid
= 2的SeatsAvailable值(AND CINEMA_SESSION.sid = 2
并不重要 - 您正在更新THEATER
表上的行)。由于tid
是影院的主键,因此只有一条记录具有该值,并且该记录已更新。
您的select
会话sid=3
加入theatre
列tid
,并且匹配tid = 2的行,这就是为什么您会看到新值 - 它与您刚更新的记录匹配。
如果您只是查看THEATER表的内容(没有任何连接),这可能更有意义。
如果您尝试表明已为某个特定会话预订了座位,那么我建议您需要更新其他桌面上的字段。我会留给你锻炼的。希望这会有所帮助。