从一个基于类似'的表中检索记录。另一个表的值

时间:2014-03-20 15:29:49

标签: mysql sql select

我试图提出一种选择语法,用于从一个表格(B)中检索记录,这些表格基于类似的'另一个不相关的表(A)的值。

有两个表:

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,我需要结果' XYZ Corporation '来自TABLE_B。

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的变量是未知的。

谢谢!

1 个答案:

答案 0 :(得分: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'