【发布时间】:2020-03-16 16:30:44
【问题描述】:
我有一个非冗余 ID 和序列的大列表,如下所示(表 A)。
在第二个表中,我有多个要更改的 ID、位置和字母记录(表 B)。
我要做的是根据表B中给出的更改替换表A主序列中特定位置的特定字母。
我正在尝试使用 STUFF() 函数来执行此操作 - 下面提供了我的查询示例 - 但理想情况下,我希望在主序。
SELECT
A.[proteinID],
STUFF(A.[proteinSeq], CAST(B.[position] AS INT), 1, B.[change_to] ) AS [proteinSeq]
FROM
[dbo].[TableA] A
LEFT OUTER JOIN
[dbo].[TableB] B ON A.proteinID = B.proteinID
通过上面的查询,我得到了第二个序列的 4 倍,一次改变一个。
我不确定是否可以使用STUFF() 实现请求的输出。另一方面,如果可能,我想避免使用CURSOR。请问有什么建议吗?
【问题讨论】:
-
我认为这里的光标不会是世界末日。
标签: sql sql-server join left-join