如何从表WHERE列中选择SELECT来自其他表的LIKE数据?

时间:2017-12-12 18:41:03

标签: sql sqlite

我已经做了类似的事情来逐一获得结果,但现在我有一个300家公司的清单,我需要从中获取数据。

c.rb -= 0.0001

结果是公司匹配的所有内容的清单。

但是我想从保险柜中选择一切,其中defendant_client(保险库中的一列)与另一个表中的公司中的任何条目匹配或相似。

SELECT * FROM vault
WHERE defendant_client LIKE '%Purdue Pharma%';

它在运行的意义上有效,但没有返回结果,即使我知道有几个匹配的公司,我应该能够得到一些结果。

我做错了什么,如何得到我需要的结果?

2 个答案:

答案 0 :(得分:2)

在您最近的编辑之后,您可能想尝试...

SELECT
    vault.*
FROM
    vault
INNER JOIN
    OpioidCompanies
        ON vault.defendant_client LIKE '%' || OpioidCompanies.company || '%'

如果简单%<blah>%不是您想要的,请考虑研究SOUNDEX()及相关功能。

答案 1 :(得分:1)

我会使用相关子查询来执行此操作:

SELECT v.* 
FROM vault v
WHERE EXISTS (SELECT 1
              FROM OpioidCompanies oc
              WHERE v.defendant_client LIKE '%' || oc.company || '%'
             );

与使用JOIN相比,这有两个优势:

  1. 如果“保险库”与多家公司匹配,则没有重复项。
  2. 匹配在第一场比赛时停止,这可能是表现的好处。