2017-04-09 122 views
-2

我只想使用bookingid更新预订的状态。我的UPDATE语句有什么问题?

UPDATE flightbooking 
SET status 'C' AS cancelledbooking 
FROM flightbooking 
WHERE bookingid = 10001; 

我得到以下错误:

ERROR: syntax error at or near "'C'"
LINE 2: SET status 'C' AS cancelledbooking

任何帮助吗?

+0

'AS'在SELECT上下文中是别名,而不是UPDATE。 –

+2

您使用了哪个数据库? –

回答

0

我建议:

UPDATE flightbooking 
    SET status = 'C' 
    WHERE bookingid = 10001; 

这应该在任何数据库的工作,假设你有正确的表和列。

FROM不一定是FROM子句的一部分。另外,它的解释方式因数据库而异。一旦你修复了SET条款,Postgres会更新所有行(我认为); SQL Server会更新匹配的行; Oracle和MySQL会产生一个错误。

0

您不能在更新语句中使用别名。

UPDATE flightbooking 
SET status = 'C' 
FROM flightbooking 
WHERE bookingid = 10001; 
0

AS用于SELECT上下文中的别名,而不是UPDATE。

这将工作:

UPDATE flightbooking 
SET status = 'C' 
FROM flightbooking 
WHERE bookingid = 10001; 
+0

它说飞行记录被指定不止一次,我是否只是在更新或从其中给它一个不同的名称? –

+0

你可以分享你的表格模式吗? –

+0

现在有效,谢谢 –

0

简单:

UPDATE flightbooking SET status = 'C' WHERE bookingid = 10001