Sql 关于连接表的多个条件
是否可以使用不同的条件与单个表进行内部联接? 我想知道是否可以将以下查询合并为一个查询:Sql 关于连接表的多个条件,sql,inner-join,Sql,Inner Join,是否可以使用不同的条件与单个表进行内部联接? 我想知道是否可以将以下查询合并为一个查询: UPDATE st SET st.GLAccount = gt.GLAccount FROM StockTransactions st INNER JOIN GLTransactions gt ON gt.TransactionID = st.PurchaseTransactionID AND gt.Quantity IS NOT NULL
UPDATE st
SET st.GLAccount = gt.GLAccount
FROM StockTransactions st
INNER JOIN GLTransactions gt ON gt.TransactionID = st.PurchaseTransactionID
AND gt.Quantity IS NOT NULL AND st.Item = gt.Item
Go
UPDATE st
SET st.GLAccount = gt.GLAccount
FROM StockTransactions st
INNER JOIN GLTransactions gt ON gt.TransactionID = st.ID AND st.Item = gt.Item
AND (st.Type = 160 OR st.Type = 165)
GO
UPDATE st
SET st.GLAccount = gt.GLAccount
FROM StockTransactions st
INNER JOIN GLTransactions gt ON gt.TransactionID = st.ID AND st.Item = gt.Item
AND gt.LineType = 1
GO
那么:
UPDATE st
SET st.GLAccount = gt.GLAccount
FROM StockTransactions st
INNER JOIN GLTransactions gt ON ( gt.TransactionID = st.PurchaseTransactionID
AND gt.Quantity IS NOT NULL
AND st.Item = gt.Item
)
OR ( gt.TransactionID = st.ID
AND st.Item = gt.Item
AND ( ( st.Type = 160
OR st.Type = 165
)
OR gt.LineType = 1
)
)
是的,这是可能的,您可以在
连接中使用或。但是,这可能会返回多个结果——它应该使用哪一个?如果我使用,性能是否会因此受到影响?单个查询应该比三个查询快——尽管如此,请自己尝试一下。但我指的是,如果您的第一条语句将帐户更新为一个值,则您的第二条或第三条语句可以更改该值。在更新值时,最好明确显示预期结果。我认为这应该很好,因为一次只有这三组条件中的一组有效。谢谢!我可以知道性能方面,这是更好的一个还是执行三个查询?您可以通过使用BEGIN TRAN…回滚并查看执行计划来测试这一点。这将取决于发挥作用的指数。