使用IN(SQLite)在另一个表中搜索相似的值

时间:2018-11-22 20:19:47

标签: sqlite

我正在使用SQLite处理大量数据(例如100gb数据)。

我需要以最快的方式在另一张表中查找一列的值。 例如,我需要找到表1的以下值

[COD]
C62
K801 

然后在表2中找到它们:

[COD_2]
C60-C63
K80-K81

我想要的结果是:

[COD_1]  [COD_2]
 C62      C60-C63
 K801     K80-K81

由于我有很多数据,因此执行以下操作效率不高:

SELECT * 
FROM TABLE_1, TABLE_2
WHERE COD_1 LIKE '%' || COD_2 || '%';

相反,我正在尝试这样做:

SELECT *
FROM TABLE_1
WHERE COD_1 IN (SELECT COD_2 FROM TABLE_2);

当然不会因为代码不完全相同而导致这种情况。有没有一种方法可以使用IN搜索另一表中某一列的相似值(类似于LIKE运算符)?还是不通过TABLE_1和TABLE_2的其他方式?

谢谢!!! 对我有用。

1 个答案:

答案 0 :(得分:0)

基于显示的小数据集,以及我对@Shawn问题的假定答案(K801是一个错字,并且应该是K80或K81),我假设以下问题描述:

在COD_2中查找一行,以使COD_1中的值介于COD_2中的 {value1}-{value2}之间; -是重要且可靠的。

我不能讲速度,但是我会这样处理:

SELECT value1, value2
from COD_1,COD_2
where value1 between substr(value2,1,instr(value2,'-')-1) and substr(value2,instr(value2,'-')+1)

想法是:将COD-2中的值分为“开始”值和“结束”值。