【发布时间】:2014-12-06 21:57:13
【问题描述】:
假设我有一个具有以下结构的表:
| column1 | column2 |
|------------|------------------|
| a | 1,L,3,K,5, |
| b | R,6,7,8,9 |
| c | 8,9,10,D |
| d | 1,2,3,H |
假设 column1 可以继续通过 z 并且 column2 可以继续使用随机数字和字母。我想要一个可以应用于任意数量的行和列以及 column2 中的值数量的通用解决方案。
我想在 MySQL 中运行一个查询,它将搜索 column2 中的所有值并输出 column1 中包含 column2 中的 3 的字母。输出应该是:
| column1 |
|------------|
| a |
| d |
许多帖子都有直接完成此任务的查询的答案,但我想以正确的方式进行。我是 sql 新手,但我相信这意味着通过创建一个新表并在这个新表上运行查询来规范化 column2 中的数据。
有人可以帮我编写代码以在 MySQL 中规范化和运行此查询吗?谢谢。
【问题讨论】:
-
您打算用标准化的表永久替换您的表吗?
-
没有。我希望保持原表完好无损。
-
保持当前表的状态将是一个坏主意。对于数据库,您不希望同一列中有多个值。它可以/将在未来产生问题。
-
Alldayiwonder 你的表设计真的很糟糕.. 虽然 MySQL 有一个逗号分隔列表的解决方法,但它仍然是一个非常糟糕的想法......我的答案是一个可行的解决方案,但我会发布如何规范化它一分钟后
-
FIND_IN_SET应该适用于您的示例。
标签: mysql csv normalization