如何在不使用 join 或 union 的情况下连接两个不同的表?

问题描述 投票:0回答:2

所以我有一个表“A”,其中包含 12 位数值的列,现在还有另一个表“B”,它只有相同数值的前 6 位数字,我想使用前 6 位连接两个表表“A”的数字和表“B”中已有 6 位值。

SELECT *    
FROM A 
inner join B ON A.K1 = B.K1

here

K1
基本上是我在输出中创建为新列的数字的前 6 位数字。

我不能使用

ALTER
,因为它是一个实时表。

mysql sql join union
2个回答
0
投票
Select a.*, b.*
from table_a a
full outer join table_b b on 
  to_number(substr(rtrim(ltrim(to_char(a.col_n))),1,6))=b.col_n;

这就是我能想到的,因为您提供了尽可能多的信息。不知道你的业务要求是inner join,left/right outer join还是full outer join。 Union 是一个完全不同的概念:它只是将来自不同数据集的类似列重新组合成一个数据集。并且有一个简单的 UNION 使 Oracle 可以排序和消除重复项和 UNION ALL,它获取所有数据,包括重复项(如果有的话)。


0
投票

您可以只加入前 6 位数字:

示例数据:

桌子

test1

id 一些字符串
123456
234567 酒吧
345678 巴兹

桌子

test2

id 其他字符串
123456789012 eenie
234567890123 米妮
987654321098

声明

SELECT * FROM test1
INNER JOIN test2
WHERE test1.id = LEFT(test2.id, 6)

会产生

id 一些字符串 id 其他字符串
123456 123456789012 eenie
234567 酒吧 234567890123 米妮

this db<>fiddle.

中测试它
© www.soinside.com 2019 - 2024. All rights reserved.