gpt4 book ai didi

mysql - 使用 IF 语句避免在 SQL 查询中添加重复项?

转载 作者:行者123 更新时间:2023-11-29 13:20:42 26 4
gpt4 key购买 nike

我正在尝试了解数据库和 SQL,这是我遇到的一个问题:如何检测新条目是否重复,如果是,则不丢弃 em> 新条目,但将其与旧条目合并?

举个例子就更清楚了。假设我正在为我的视频游戏收藏创建一个数据库。我的列是“标题”(varchar),然后是我拥有该游戏的每个平台的 bool 列,因为有些游戏位于多个平台上。

我购买了 World of Goo,然后转到我的数据库说

INSERT INTO `collections`.`games` (`Title`,`Windows`) VALUES ('World of Goo','1');

简单。但六个月后,我再次在 Android 上购买了它,因为我真的很喜欢这个游戏,并且想在床上玩它。我现在想做的是编写一个查询,内容如下:

IF (select * from `games` where title = 'World of Goo') {
UPDATE `games`
SET `Android` = '1'
WHERE `title` = 'World of Goo';
} ELSE {
INSERT INTO `collections`.`games` (`Title`,`Android`) VALUES ('World of Goo','1');
}

(我知道第一行是错误的,我需要写“if query returns 1 or more results”,但现在忽略它。)

现在...我知道我可以使用 PHP 脚本来完成此操作。但我不想使用比必要的更复杂的解决方案——有没有办法单独用 SQL 来做到这一点?

(这是一个问题的例子,我知道实际上我会记得我拥有一个游戏,只需编写查询来更新它。)

最佳答案

MySQL 已使用 INSERT ... ON DUPLICATE KEY UPDATE 实现了 UPSERT 语句.

INSERT INTO collections.games (Title, Android) 
VALUES ('World of Goo', '1')
ON DUPLICATE KEY UPDATE Android = '1'

但是为了执行上面的语句,您需要使Title列唯一。

ALTER TABLE games ADD CONSTRAINT games_uq UNIQUE (Title)

关于mysql - 使用 IF 语句避免在 SQL 查询中添加重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20895377/

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