我正在尝试创建一个SQL语句来检查表是否存在记录,如果不存在,则会添加记录。如果确实存在,则会将字段的值更改为TRUE。
If (SELECT COUNT(*) FROM 'my_preferences' JOIN users ON 'user_id' = 'mp_user_id' ) =1
UPDATE `mp_start_page`= TRUE where 'user_id' = 'mp_user_id'
Else
INSERT INTO `my_preferences` (`mp_user_id`, `mp_start_page`) VALUES ('user_id', 'TRUE')
我也尝试使用INSERT ... ON DUPLICATE KEY UPDATE函数来实现这一点,但我似乎无法使其工作。
谢谢你的帮助。
编辑添加:我正在比较两个单独的表(my_preferences和用户)。我需要检查my_preferences表以查看mp_user_id字段中是否存在users.user_id,如果是,则将mp_state_page更新为TRUE,否则,它会添加一条记录,使mp_user_id = user_id和mp_start_page为TRUE
答案 0 :(得分:1)
INSERT INTO my_preferences (mp_user_id, mp_start_page) VALUES ('user_id', 'TRUE') ON DUPLICATE KEY UPDATE mp_start_page = 'TRUE';
应该有效。也许mp_start_page
是一个布尔字段,在这种情况下不要引用它。正如下面提到的@galador,请确保将mp_user_id
设置为某种键,无论是主键还是外键键。否则ON DUPLICATE KEY
没有意义。
答案 1 :(得分:0)
语法错误
UPDATE `mp_start_page`= TRUE where 'user_id' = 'mp_user_id' <-- wrong syntax
UPDATE TABLE_NAME SET `mp_start_page`= TRUE where 'user_id' = 'mp_user_id';
但是mysql不接受
if {condition}
then {update}
else insert
所以
insert ignore ... <-- if the user_id is primary key
其他严重问题
UPDATE `mp_start_page`= TRUE <--- this is 1
VALUES ('user_id', 'TRUE') <--- this is string "TRUE"
两者都没有做同样的事情
答案 2 :(得分:0)
我也考虑过使用INSERT ... ON来实现这一目标 DUPLICATE KEY UPDATE功能,但我似乎无法让它工作 任
INSERT INTO my_preferences (mp_user_id, mp_start_page) VALUES ('user_id', TRUE)
ON DUPLICATE KEY UPDATE mp_start_page=VALUES(mp_start_page)
如果您在mp_user_id
上设置了唯一键,则应该有效。