【问题标题】:Retrieving records from one table based in 'similar' values of another table根据另一个表的“相似”值从一个表中检索记录
【发布时间】:2014-03-20 23:32:01
【问题描述】:

我正在尝试提出一种选择语法,用于根据另一个不相关表 (A) 的“相似”值从一个表 (B) 中检索记录。

有两个表:

TABLE_A
ID  CODE    COMPANY
1   234     XYZ Corporation, LLC
2   142     Corp ABC Enterprise, S.L.D.
3   145     Z. Incorporated, GmBH
4   134     XYZ Corporation, LLC
5   741     Z. Incorporated, GmBH
6   952     Corp ABC Enterprise, S.L.D.

TABLE_B
ID  COMPANY
1   XYZ Corporation
2   Z. Incorporated
3   Corp ABC Enterprise
4   Just another Company

我需要从 TABLE_A 中现有的条件中提取 TABLE_B.COMPANY 字段。例如,如果搜索条件是 CODE=234,我需要来自 TABLE_B 的结果 'XYZ Corporation'。

TABLE_A 有重复的公司,而 TABLE_B 没有。

到目前为止,我有这个:

SELECT DISTINCT T1.COMPANY
FROM TABLE_A T1 WHERE EXISTS
(SELECT 1 FROM 
(SELECT CONCAT(T2.COMPANY, '%') AS Company FROM TABLE_B T2) c 
WHERE T1.COMPANY LIKE Company AND T1.CODE='234';

这会产生结果“XYZ Corporation, LLC”,而我需要“XYZ Corporation”。也就是说,我需要 SELECT T2.COMPANY FROM ... 之类的东西,这显然不起作用,因为该变量对于第一个 SELECT 是未知的。

谢谢!

【问题讨论】:

    标签: mysql sql select


    【解决方案1】:

    您需要join 而不是exists 才能从table_b 获取行:

    SELECT DISTINCT T2.COMPANY
    FROM TABLE_A T1 JOIN
         TABLE_B T2
         ON T1.COMPANY LIKE CONCAT(T2.COMPANY, '%') AND T1.CODE = '234'
    

    【讨论】:

    • 哇,响应速度快,正是我所需要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2017-07-29
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多