gpt4 book ai didi

mysql - 在使用 SET sql 创建的表中插入和删除多个值

转载 作者:行者123 更新时间:2023-11-29 06:27:36 24 4
gpt4 key购买 nike

我创建了一个 SET sql 表,因此一行可以包含多个值:Foo_1 Foo_2 Foo_3。

上面的查询运行,但它将更新行并仅设置一个值。

QueryType 有效值为 1 2 或 3

"UPDATE Foo_status
SET type = 'Foo_%s',
status = %d
WHERE name ='%s'
", queryType.c_str(),status,GetName()

当我运行查询时:假设QueryType1,它正在工作..我的类型行将有Foo_1,但是当我再次运行查询,FooQueryType 2,它将删除 Foo_1 并添加 Foo_2

如何更改我的查询,以便当我运行查询时它将继续更新值?

示例:运行查询

 -Add Foo_1

运行查询

-Add Foo_2

表结构

CREATE TABLE `Foo_status` (
`name` text NOT NULL,
`type` set('Foo_1','Foo_2','Foo_3') CHARACTER SET latin2 NOT NULL DEFAULT '',
`status` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我试图寻找解决方案,但没有成功,这是我在这里问的。谢谢!

最佳答案

使用逗号分隔的字符串指定多个集合元素。要添加新值,您必须连接以逗号开头的字符串。

"UPDATE Foo_status
SET type = CONCAT(type, ',Foo_%s'),
status = %d
WHERE name ='%s'
", queryType.c_str(),status,GetName()

要从 SET 中删除值,请使用 REPLACE():

"UPDATE Foo_status
SET type = REPLACE(type, 'Foo_%s', ''),
status = %d
WHERE name ='%s'
", queryType.c_str(),status,GetName()

如果您标准化架构并使用每个类型具有单独行的表,而不是使用SET数据类型,事情会更容易。这还允许您添加索引,从而更有效地搜索特定的设置值。

关于mysql - 在使用 SET sql 创建的表中插入和删除多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58598160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com