gpt4 book ai didi

连接两个表的前缀和非前缀字段的 SQL 查询

转载 作者:行者123 更新时间:2023-12-05 00:56:36 26 4
gpt4 key购买 nike

我有两张 table b 在我的 Access 数据库中。在两个表中,我都有字段 ID。然而在表 我的 ID 字段以“31”为前缀,其中作为表 中的 ID 字段b 不是。

所以例如

table a                 table b

ID field2 ID field3
31L123 test123 L123 123test
31L122 test321 L122 321test

我的前缀字段表是从 Excel 导出中定期导入的,我知道我可以在 excel 级别删除前缀,但是有没有办法通过在 SQL 中的连接上使用某种 Concatenate 函数来连接 ID 字段上的两个表任何机会声明?

例如,以下内容:
SELECT Id, Field2, Field3 
FROM a LEFT JOIN b ON CONCATENATE('31', a.ID) = b.ID
WHERE a.Field2 = 13

我不确定这是否是正确的方法 - 这就是为什么我似乎无法找到有关我的问题的任何现有帮助(在导入之前忽略在 excel 级别处理字段)。

最佳答案

CONCATENATE()在 Access SQL 中不受支持。通常你会使用 &用于串联。

但是,我认为您不需要为您的加入 ON 连接任何东西健康)状况。只需使用 Mid()忽略前 2 个字符...

ON Mid(a.ID, 3) = b.ID

这应该可行,但随着表的增长,性能可能变得 Not Acceptable 。您应该通过“清理” a.ID 获得更好的性能。每次导入后立即取值...

UPDATE a
SET ID = Mid(ID, 3)
WHERE ID ALike '31%';

那么你的 SELECT查询的连接可以使用更简单、更快的 ON健康)状况 ...

ON a.ID = b.ID

确保 ID被索引以实现最佳性能。

关于连接两个表的前缀和非前缀字段的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36063830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com