MYSQL逗号分隔列表,可以添加和删除值吗?

时间:2011-07-10 21:03:10

标签: php mysql

我有一个以逗号分隔的列表,它存储在mysql表的varchar字段中。

是否可以使用sql查询直接在列表中添加和删除值?或者我是否必须从表中取出数据,在PHP中操作并将其替换回mysql?

1 个答案:

答案 0 :(得分:4)

在mysql中的InnoDB和MyIsam引擎中无法做到这一点。可能在其他引擎中(检查CSV引擎) 您可以在存储过程中执行此操作,但不建议这样做 你应该怎么做来解决这个问题是重构你的代码并规范你的DB =>
原始表

T1: id | data                    | some_other_data
     1 |  gg,jj,ss,ee,tt,hh      |   abanibi

成为:

T1: id | some_other_data
     1 |   abanibi

T2: id   |  t1_id    |   data_piece
     1   |    1      |      gg 
     2   |    1      |      jj 
     3   |    1      |      ss 
     4   |    1      |      ee
     5   |    1      |      tt
     6   |    1      |      hh 

如果data_piece是系统中的一个常量值,可以重复使用,那么你也需要添加一个查找表。

我知道它看起来更有效,但它会为你节省像现在这样的问题,这需要花费更多的时间来解决。