UPDATE查询遇到问题

时间:2018-04-21 18:35:47

标签: sql-server sql-update

我在尝试在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应该保持不变。

1 个答案:

答案 0 :(得分:0)

update语句在Theater表上递减了tid = 2的SeatsAvailable值(AND CINEMA_SESSION.sid = 2并不重要 - 您正在更新THEATER表上的行)。由于tid是影院的主键,因此只有一条记录具有该值,并且该记录已更新。

您的select会话sid=3加入theatretid,并且匹配tid = 2的行,这就是为什么您会看到新值 - 它与您刚更新的记录匹配。

如果您只是查看THEATER表的内容(没有任何连接),这可能更有意义。

如果您尝试表明已为某个特定会话预订了座位,那么我建议您需要更新其他桌面上的字段。我会留给你锻炼的。希望这会有所帮助。