gpt4 book ai didi

MySQL INSERT 如果不存在(不使用主键)

转载 作者:可可西里 更新时间:2023-11-01 06:32:19 25 4
gpt4 key购买 nike

如果不存在,我如何插入一行?
* 注意这些不是主键,我的主键设置为自动递增

尝试插入忽略但没有用

INSERT IGNORE INTO mytable (`myid`, `theirid`) VALUES ('5', '1')
ON DUPLICATE KEY <DO NOTHING>

表格看起来像:

CREATE TABLE `mytable` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`myid` bigint(20) NOT NULL,
`theirid` bigint(20) NOT NULL,
`activated` tinyint(1) NOT NULL DEFAULT '0',
`dateStamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1$$

最佳答案

1) 你能在 (myid, theirid) 上添加一个 UNIQUE 约束吗?如果是,请添加此约束并使用:

INSERT INTO mytable (myid, theirid) 
VALUES (5, 1) ;

并忽略生成警告(或将上面的内容替换为 INSERT IGNORE)

2) 如果你不能添加这样的约束(例如,你有时想允许这样的重复,而其他时候你不想),你可以使用这个:

INSERT INTO mytable (myid, theirid) 
SELECT 5, 1
FROM dual
WHERE NOT EXISTS
( SELECT *
FROM mytable
WHERE myid = 5
AND theirid = 1
) ;

关于MySQL INSERT 如果不存在(不使用主键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369076/

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