我正在尝试提出一种选择语法,用于根据另一个不相关表 (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 来说是未知的。
谢谢!
最佳答案
您需要使用 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'
关于mysql - 根据另一个表的 'similar' 值从一个表中检索记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22537710/