sql - 使用 CASE 和 MAX 函数基于第一个表中的 6 位或 7 位键与第二个表中的 7 位键连接表
问题描述
表格1:
Id1 Data1
123123 David
123124 Jan
1231344 Juro
1234126 Marco
表 2:
Id2 Data2
1231230 Info 1
1231231 Info 2
1231232 Info 3
1231240 Info 4
1231241 Info 5
1231242 Info 6
表 1 中的每个 id 根据前 6 位数字在表 2 中可以有 1 个或多个匹配项。例如,表 1 中的 123123 匹配表 2 中的 1231230、1231231 和 1231232。我正在尝试根据表 1 中的 id1 创建连接以匹配表 2 中的最大 id2。
解决方案
我会加入使用LIKE
:
SELECT
tb1.id1,
tb1.data1
MAX(tb2.[id2]) AS id2
FROM [dbo].[table1] tb1
LEFT JOIN [dbo].[table2] tb2
ON tb2.[id2] LIKE CONCAT(tb1.[id1], '%')
GROUP BY
tb1.id1,
tb1.data1
ORDER BY
tb1.id1 DESC;
这种方法可能仍然保留在第二个表上使用索引的可能性。无论如何,它比您的版本更容易阅读。
推荐阅读
- asp.net-core - 从另一个站点调用站点并自动返回。MVC ASP 网络核心 3.1
- angular - 错误类型错误:无法读取未定义的属性(读取“openSnackBar”)
- r - 在 R 中调整 ggplotly hoover 信息中的百分比格式
- apache-spark-sql - Spark CACHE 和 BROADCAST 的性能
- javascript - 为什么“排除”选项在 tsconfig 中不起作用?
- npm - 如何使用 npm 版本增加 prepatch / preid 后缀后面的计数器
- javascript - XMLHttpRequest 在 Chrome 中挂起,但在 IE 上很好
- sql - 使用组层次结构计算表中的 MemberID
- autodesk-forge - 与传统方法相比,使用conversionMethod 现代的模型转换生成具有不同测量单位的svf
- python - 如何修复找不到满足要求的版本 django-multi-captcha-admin==1.0.0