gpt4 book ai didi

mysql - 如果值不为空,则插入 mysql

转载 作者:可可西里 更新时间:2023-11-01 08:29:36 24 4
gpt4 key购买 nike

我在 mysql 中有一个这样的表(id 是主键):

 id | name | age
1 | John | 46
2 | | 56
3 | Jane | 25

现在我只想在名称为空时更新名称。如果该值不为空,则应使用新 ID 复制该行,否则应更新名称。

我认为这可以用 if 语句来完成,但它不起作用。

if((select `name` from `table1` where `id` = 3) = '',
update `table1` set `name`='ally' where `id` = 3,
insert into `table1` (`id`,`name`,`age`) values
(4, 'ally', select `age` from `table1` where `id` = 3))

编辑:

对于 Spencers 的回答,我在代码中使用 if 使其工作。 (但是我仍然想要一种只执行单个 mysql 查询的方法)。

db.set_database('database1')
cursor = db.cursor()

query = "select IF(CHAR_LENGTH(name)>0,1,0) from table1 where id = {0}".format(id)
cursor.execute(query)
val1 = cursor.fetchone()

if val1[0]:
query = "INSERT INTO `table1` (`id`,`name`,`age`) SELECT {0},{1},`age` FROM `table1` WHERE `id` = {2}".format(new_id, name, id)
cursor.execute(query)
else:
query = "update `table1` set `name` = '{0}' where `id` = {1}".format(name, id)
cursor.execute(query)

db.commit()

最佳答案

如果你这样做:

select t.*, 
if(
EXISTS(select n.name from table1 n where n.id = 2 and NULLIF(n.name, '') is null) ,
'true',
'false'
) from table1 t

如果语句返回“true”,因为在您的表中存在 id =2 且名称为空的行。

像这个例子,你可以编辑你的查询:

if(
EXISTS(select n.name from table1 n where n.id = 3 and NULLIF(n.name, '') is null),
update `table1` set `name`='ally' where `id` = 3,
insert into `table1` (`id`,`name`,`age`) values
(4, 'ally', select `age` from `table1` where `id` = 3)
)

关于mysql - 如果值不为空,则插入 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30580862/

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