如果表1中的a列和b列是表2中与a列和b列匹配的行,我想从表2中引入c列。
表1
Column A Column B
ABC123 XX470000
表2
Column A Column B Column C
ABC123,EFG123 XX470000,XX560000 Winner
查询:
Select * From
(
Select * From Table 1
) T1.
(
Select * From Table 2
) T2.
where T1.ColumnA in s2.ColumnA
and T1.ColumnB in s2.ColumnB
;
我尝试了“like”、“in”和“=”语句来匹配不同的表。还有成千上万行我需要这个。
2条答案
按热度按时间f3temu5u1#
如果要检查csv列表中每个值是否存在,则可以使用以下联接条件:
但是,您确实应该修复您的模式,并将csv字符串的每个值存储在单独的表行中(可能使用桥接表)。在表中存储带分隔符的值以某种方式破坏了关系数据库的用途。推荐阅读:在数据库列中存储分隔列表真的那么糟糕吗?。
xfyts7mz2#
一种选择是使用
REGEXP_SUBSTR()
在一个SELECT .. FROM .. CONNECT BY level <= ...
类型查询'[^,]+'
分裂ColumnA
价值观Table2
转换成以逗号分隔的子字符串,然后与其他表的ColumnA
匹配条件中的值,以便获得这些子字符串的精确匹配:演示