SQL 基于内部联接向表中添加列

信息网络

我有两张火鸟桌,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 ?

蒂姆·比格莱森

目前您的T2表未规范化,您正在many_eans中存储 CSV 数据我建议您进行重组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结果集中获得重复的结果

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于表名模式的SQL内部联接

来自分类Dev

基于查询表的SQL Server内部联接

来自分类Dev

基于表名模式的SQL内部联接

来自分类Dev

使用检查约束SQL向表中添加列

来自分类Dev

使用检查约束SQL向表中添加列

来自分类Dev

SQL使用case语句向表中添加列

来自分类Dev

如何基于分组在一起的行向SQL表添加另一列

来自分类Dev

SQL Server:基于不同表中的列向表中插入多行

来自分类Dev

SQL查询-使用内部联接获取表中具有ID的多列总和

来自分类Dev

SQL-从联接表中检索列

来自分类Dev

SQL内部联接到左联接表

来自分类Dev

如何在 SQL 内部联接中添加别名?

来自分类Dev

SQL内部联接在访问表中返回重复项

来自分类Dev

SQL - 将内部联接的结果存储在新表中?

来自分类Dev

根据表中的其他行向SQL表添加列

来自分类Dev

SQL - 从另一个表向表中的新列添加值

来自分类Dev

SQL内部联接多列

来自分类Dev

向 SQL 中的视图添加新列

来自分类Dev

在SQL中不受限制地向表中添加新列

来自分类Dev

在SQL中不受限制地向表中添加新列

来自分类Dev

SQL:使用另一个表中的匹配祖先进行联接(内部联接)

来自分类Dev

使用SQL在Access中的5个表上进行内部联接和左联接

来自分类Dev

基于另一个列的最大值的列上的SQL内部联接

来自分类Dev

SQL内部联接与函数返回表

来自分类Dev

在SQL中使用内部联接创建表

来自分类Dev

使用“内部联接”从Oracle SQL表删除

来自分类Dev

SQL查询与临时表的内部联接

来自分类Dev

在SQL中使用内部联接创建表

来自分类Dev

合并内部联接到表SQL的结果