如何在SQL Server 2008中使用Table别名编写UPDATE SQL?
问题描述:
我有一个非常基本的UPDATE SQL -如何在SQL Server 2008中使用Table别名编写UPDATE SQL?
UPDATE HOLD_TABLE Q SET Q.TITLE = 'TEST' WHERE Q.ID = 101;
该查询运行在Oracle中,德比,我-SQL罚款 - 但它在SQL Server 2008 有以下错误失败: “消息102,级别15,状态1,行1 “Q”附近的语法错误。“
如果我从SQL中删除所有出现的别名“Q”,那么它就起作用。
但我需要使用别名。
答
在SQL Server上的更新语句中使用别名的语法如下:
UPDATE Q
SET Q.TITLE = 'TEST'
FROM HOLD_TABLE Q
WHERE Q.ID = 101;
别名不应该是必要这里虽然。
+2
是的!!!有用。感谢您及时的回复。你有什么机会知道为什么MSSQL服务器支持这种非常规的更新语法? – javauser71 2011-02-14 06:02:51
答
您总是可以采用CTE(通用表格式)方法。
;WITH updateCTE AS
(
SELECT ID, TITLE
FROM HOLD_TABLE
WHERE ID = 101
)
UPDATE updateCTE
SET TITLE = 'TEST';
为什么你需要使用别名?它似乎并不像你需要它。 – 2011-02-12 23:59:24
是的 - 从编程的角度来看,我不需要它。但是我有一个现有的/旧的库,它可以生成各种带有表别名的DML SQL。图书馆有许多类,有一种复杂的逻辑。现在摆脱库中的表别名比调整现有的适用于MSSQL的逻辑更有效。当涉及多个表时,我确实需要有表别名。 – javauser71 2011-02-14 06:09:14