基于列值的联接(最佳匹配)

K09

我有3栏将我的JOIN基于-> ID,帐户,客户。可以有多行包含相同的ID值。

我想在1)ID,2)帐户,3)保管箱上优先考虑我的JOIN。

因此,在下面的示例中,由于所有列均包含一个值,因此应在@UserData中填充的UserCode应该为'u11z'。

我该怎么做呢?到目前为止我的代码下面...

UPDATE  @UserData
    SET UserCode = ur.UserCode
FROM @UserData uA 
INNER JOIN UserReference ur
    ON uA.ID = ur.ID
    AND ((ua.Account = ur.Account) OR (ur.Account = ur.Account))
    AND ((ua.Cust = ur.Cust) OR (ur.Cust = ur.Cust))

用户参考表:

Cust       Account      ID       UserCode
234         NULL      9A2346     u12x
234         Test      9A2346     u11z
NULL        NULL      9A2346     u30s

@UserData表:

Cust       Account      ID       UserCode
234         Test      9A2346     NULL

谢谢!

SQLChao

您可以尝试以下方法。我加入了表格,计算了比赛的数量,并对它们进行了排名。然后选择等级1。

; with userCte (userCodeA, userCodeB, rank)
as
(
select a.usercode, b.usercode, 
rank() over (partition by a.id order by case when a.cust = b.cust then 1 else 0 end +
case when a.account = b.account then 1 else 0 end  +
case when a.id = b.id then 1 else 0 end desc) as rank
from userdata a
join userreference b
on a.id = b.id or a.account = b.account or a.id = b.id
)

select * from userCte
--update userCte
--set userCodeA = userCodeB
where rank = 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

基于列值的联接类型

基于列值的条件联接列

基于列值的内部联接表

在MSSQL中联接选择和设置列值的最佳方法

基于列值匹配行python pandas

如何基于包含值作为列表的列联接数据框

MySQL联接基于2个不同的表匹配值的另一个表值?

熊猫:基于公共列联接两个数据框的最佳方法

如何编写mysql查询以实现以下类型的联接(基于列的值联接)

查询以基于列值选择单个最佳记录

基于列值在Java中对矩阵排序的最佳方法

基于多列的最佳合并方式(分类值)

用另一列替换基于匹配的REGEX的值

基于列中的匹配值来查找数据

基于作为子集的列值匹配数据帧

查询以基于其他列获取最接近的匹配值

在基于其他向量的列中找到匹配值

Php 从基于列的多维数组中获取匹配值

基于具有自联接的另一个列值按值排序

SQL Redshift:如何在基于其他列值的联接中使用值

MySQL-内部联接-使用基于其他值的值添加列

基于两列比较两个数据框并打印匹配值并对匹配值进行分组

SQL根据联接表中链接记录的值匹配将列设置为指定值

从mysql内部联接显示值的最佳方法

基于行值MSSQL的条件内部联接

如何使用特定匹配值基于另一列获取一列的值

基于另一列熊猫数据框迭代列值匹配值

如何基于匹配R中其他几个列的行值来填充列的值

如何基于与其他列中的值匹配的行中的值创建新列?