在表和where子句之间使用一些JOIN更新查询

问题描述

我在MSsql DB中具有以下关系:

enter image description here

我想进行一个UPDATE查询在这里我可以过滤第一个表的值。 示例如下:

我想从Inv_Transaction_Lines_Table获取所有产品,其中第一个表(Gen_Documents_Table_1)的Document_No等于'3250824',并且状态为'Released'

SELECT查询非常简单:

SELECT        dbo.Inv_Transaction_Lines_Table.*,dbo.Inv_Transaction_Lines_Table.Product_Id AS Expr1,dbo.Gen_Documents_Table.Document_No,dbo.Inv_Transaction_Lines_Table.Quantity_Base AS Expr2
FROM            dbo.Gen_Documents_Table AS Gen_Documents_Table_1 RIGHT OUTER JOIN
                         dbo.Inv_Transactions_Table RIGHT OUTER JOIN
                         dbo.Inv_Transaction_Lines_Table ON dbo.Inv_Transactions_Table.Transaction_Id = dbo.Inv_Transaction_Lines_Table.Transaction_Id ON 
                         Gen_Documents_Table_1.Id = dbo.Inv_Transactions_Table.Document_Id LEFT OUTER JOIN
                         dbo.Gen_Documents_Table ON Gen_Documents_Table_1.Master_Document_Id = dbo.Gen_Documents_Table.Id
WHERE        (Gen_Documents_Table_1.State = N'30') AND (dbo.Gen_Documents_Table.Document_No = N'3250824')

但是我无法使用UPDATE查询

谢谢!

解决方法

如果对select的查询正确,则可以在同一查询上对select进行更新。例如,如果要更新quantity_base:

let userInfo = notification.request.content.userInfo as! [String: Any]
        var local = true
        if let aps = userInfo["aps"] as? [String: Any] {
            local = false
            if let badgeCount = aps["badge"] as? Int {
                if badgeCount == 0 {
                    return // Don't notify on badge reset
                }
            }
        }
        var notificationKey = ""
        if let ck = userInfo["ck"] as? [String: Any] {
            if let qry = ck["qry"] as? [String: Any] {
                if let af = qry["af"] as? [String: Any] {
                    if let key = af["key"] as? String {
                        notificationKey = key
                    }
                }
            }
        }