MySQL函数替换列中的逗号分隔值
Posted
技术标签:
【中文标题】MySQL函数替换列中的逗号分隔值【英文标题】:MySQL function to replace comma separated values in column 【发布时间】:2014-06-12 08:27:14 【问题描述】:我有一列有逗号分隔的值(ID)。我需要为它们更改相应的值。我需要 mysql 函数来替换。
这是我的桌子1。
id name
-------------------
1 Lara
2 Smith
3 Antony
4 Ken
这是我的桌子2
id friends
---------------------
1 2,3
2 1,2
3 1,3
4 1,4,3,2
当我查询 table2 时,我的 MySQL 函数 (get_names) 应该返回以逗号分隔的名称,而不是 name'ids。
例如
当我这样打电话时
select get_names('1,2,3,4','Lara,Smith,Antony,Ken','3,1');
它应该返回Antony,Lara
这里
我的
1st parameter is - total user ids with comma separated order
2nd parameter is - total user name with comma separated order (same order like user ids)
3rd parameter is - any no. of user ids with comma separated any order
请帮帮我。
【问题讨论】:
2 个问题 - 1. 您的实际数据中有多少个 id-name 对? 2. 可以在应用代码中做这个替换操作吗? @shree.pat18 回答。 1. 仅 100-500 条数据 2. 我在应用程序中无法做到。 【参考方案1】:我建议更改表 2,这样您就不会有逗号分隔的值:
id friends
---------------------
1 2
1 3
2 1
2 2
3 1
3 3
4 1
4 4
4 3
4 2
在这种情况下,您还必须更改 MySQL 函数,但使用简单的连接检索值会更容易。
【讨论】:
嗨。我将增加表中的行数,而且当我在单行中显示此表时会非常困难 @SathishBabu 绝对的废话 @Strawberry 你建议我使用上述概念吗? 是的。请参阅规范化 - 尽管上面示例中的id
列有点不寻常。简单地存储朋友对更为常见。【参考方案2】:
mysql 中的逗号分隔值违反了 1st NF
【讨论】:
以上是关于MySQL函数替换列中的逗号分隔值的主要内容,如果未能解决你的问题,请参考以下文章