sql - sql update INNER JOIN中关键字'INNER'附近的语法不正确
问题描述
我试图通过加入两个表来更新一些记录。但它给了我一些语法错误。
请帮我解决这个问题。
UPDATE [GCPurchaseInstalment]
INNER JOIN @Temptable
ON GCPurchaseInstalment.StripeInvoiceId = @Temptable.InID
SET GCPurchaseInstalment.AmountReceived = @AMOUNT_RECEIVED,
GCPurchaseInstalment.PaymentFee = @PAYMENT_FEE,
GCPurchaseInstalment.ReceivedDate = @Temptable.paidDate,
GCPurchaseInstalment.StripeInvoiceId = @Temptable.InID,
GCPurchaseInstalment.IsActive = 0
WHERE GCPurchaseInstalment.GCPurchaseInstalmentId = @GCPurchaseInstalmentId
AND @Temptable.id = @RowCount
解决方案
SQL Server 中的正确语法使用FROM
:
UPDATE pi
SET pi.AmountReceived = @AMOUNT_RECEIVED,
pi.PaymentFee = @PAYMENT_FEE,
pi.ReceivedDate = t.paidDate,
pi.StripeInvoiceId = t.InID,
pi.IsActive = 0
FROM [GCPurchaseInstalment] pi JOIN
@Temptable t
ON pi.StripeInvoiceId = t.InID
WHERE pi.GCPurchaseInstalmentId = @GCPurchaseInstalmentId AND
t.id = @RowCount;
请注意,我还引入了表别名,因此查询更易于编写和阅读。
推荐阅读
- arrays - 将字符串数组保存到 CoreData
- ubuntu - 是什么原因导致 Magento Cloud CLI 帐户登录不断失败?
- vue.js - dist 文件夹内容仅适用于服务器的根目录
- android - Firebase Google Analytics 与自定义 FirebaseOptions 初始化方法
- amazon-web-services - 为多个 AppSync 用户订阅同一个模型突变
- asp.net-core - 如何检查对话框是否开始?
- docker - Dockerfile VOLUME 指令创建什么类型的卷?
- python - 在 Python 中使用 CUDA 进行 GPU 控制
- javascript - 在 .Net core 的 Angular 应用程序中访问 Api Url
- sql-server - 如何使用 talend 将 Sql 查询输出作为邮件发送?