我在mysql行值中有这样的东西:
{15;16;}
我想要一个mysql_query来更新它。它必须是类似“{15; 16; 17}”所以我需要删除最后“}”添加我的文字并用“}”关闭
删除最后的“}”代码:
SUBSTRING(server_players, 1, LENGTH(server_players)-1)
添加文字:
CONCAT(server_players, '17;}')
但我不知道如何构建一个查询:(
这是查询:
UPDATE members SET "Here must be built code" WHERE server_id=1
答案 0 :(得分:0)
一般来说,这种操作最好在应用程序中完成,但另外,以这种格式存储数据并不是一个好主意。关系数据库更喜欢将事物分解为单个记录。
那就是说,你的解决方案是嵌套这两件事:
UPDATE members
SET server_players=CONCAT(SUBSTRING(server_players, 1, LENGTH(server_players)-1), '17;}')
WHERE server_id=1
从列表中删除任意玩家的查询代码将更加复杂。我强烈建议不要使用此架构。
正如您所看到的,这是一种非常非常混乱的方式,可以做到:
INSERT INTO server_players (server_id, player_id) VALUES (1, 17)
如果您有一张专门针对服务器上玩家的表格。
请记住,正确的关系表具有快速查询的优势,因为它们已被编入索引,并且您可以对该数据执行有用的操作,例如应用JOIN
来预加载其他信息。