我有两个火鸟桌,T1& T2。
T1 columns: pid, ean, desc
A T1 record: 1234, '102030', 'the desc'
和
T2 columns: eid, many_eans, eandesc
A T2 record: 4321, '634232;**102030**;273728', 'the ean desc'
我可以使用此选择查询获取我的结果:
select T1.pid
, T1.ean
, T1.desc
, T2.eandesc
from table1 as T1
inner
join table2 as T2
on T1.ean like '%' || T2.many_eans || '%'
但是查询花了太长时间,因此我想在T1中添加一个类似于计算依据的列,它将T2.eandesc文本添加到T1表中,其中T1.ean就像%T2.many_eans%
添加列后,我会执行此查询以获取数据。
select pid, ean, desc, eandesc from T1
如何将T2.eandesc添加到T1?
答案 0 :(得分:1)
目前,您的T2
表未进行规范化,并且您将CSV数据存储在many_eans
列中。我建议你重组T2
,以便每个记录出现一个ean
,例如
T2 columns: eid, ean, eandesc
4321, '634232', 'the ean desc'
4321, '102030', 'the ean desc'
4321, '273728', 'the ean desc'
然后,以下简单连接就足以获得结果:
select
T1.pid
T1.ean
T1.desc
T2.eandesc
from table1 as T1
inner join table2 as T2
on T1.ean = T2.ean
请注意,如果给定的ean
在您当前的某个字符串中出现多次,则可以使用select distinct
来确保您不会从T1
获得重复的结果在你的结果集中。