【发布时间】:2015-12-30 15:31:21
【问题描述】:
我有两张表,我们称它为表 A 和表 B。它们看起来像:
A.col1 A.colX B.colY
1 123 123
2 234, 123 234
3 2, 52352 2
52352
我要做的是JOIN 他们,很可能使用WHERE,因为我的环境不支持非等连接。我有表A 的问题,其中数字是字符串。我尝试了解决方案:
SELECT...
FROM A, B
WHERE A.colX LIKE concat('%', B.colY, '%')
但它不能正常工作,例如来自B.colY 的值2 出现在表A.colX 的每个字符串中。
最后的例子是我想要实现的:
output
1 123 -------> 123
2 234, 123 --> 234
1 234, 123 --> 123
3 2, 52352 --> 2
3 2, 52352 --> 52352
你对此有什么想法吗?
【问题讨论】:
-
首先 - 这绝对是糟糕的表模式设计。而不是像
A.colX中的234, 123这样的逗号分隔列表,它应该是相关的表,将这些值保存在不同的记录234、123(当然还有一个返回表A的外键)。有了这个单独的表,您就可以摆脱复杂的连接条件。 -
B.colY 的数据类型?
-
我同意你的观点,但是这些数据来自上传到数据库的 excel 文件。这两个表是与 excel 不同的电子表格。
-
两列的数据类型不同,但我使用 Cast() 将其转换(从 bigint 到 varchar)