Mysql 检查列表是否在表中
嘿,社区 我目前使用一个临时表来存储数组列表,比较表中不存在的数组并插入它们,但我希望有一种更快、更优化的方法 我的目标是把这个问题归结为一个问题 1.)我有一个c_no int数组(1,2,3,4,5),我想添加到一个group_join表中 2.)在groups_join中,我需要执行以下查询以获取表中当前的所有c_no值Mysql 检查列表是否在表中,mysql,sql,Mysql,Sql,嘿,社区 我目前使用一个临时表来存储数组列表,比较表中不存在的数组并插入它们,但我希望有一种更快、更优化的方法 我的目标是把这个问题归结为一个问题 1.)我有一个c_no int数组(1,2,3,4,5),我想添加到一个group_join表中 2.)在groups_join中,我需要执行以下查询以获取表中当前的所有c_no值 select c_no from groups_join where g_no = (INT) 查看组中的INT值 3.)我需要某种方法来检查我将要插入的任何c_-n
select c_no from groups_join where g_no = (INT)
查看组中的INT值
3.)我需要某种方法来检查我将要插入的任何c_-no-int是否已存在于具有相同g_-no的groups_-join表中,以便我没有重复项。我猜您正在查找关键字中的
SELECT * FROM myTable WHERE field IN (myList)
如果希望g_no字段具有唯一值,为什么不添加unique
索引 我猜您正在
关键字中查找
SELECT * FROM myTable WHERE field IN (myList)
如果希望g_no字段具有唯一值,为什么不添加unique
索引 要插入组\u join
表中不存在的数组值,您需要使用不存在
类似以下内容:
INSERT INTO groups_join(c_no)
SELECT c_no
FROM yourTempTable yt
WHERE NOT EXISTS (
SELECT 1
FROM groups_join gj
WHERE yt.c_no = gj.c_no
);
要插入groups\u join
表中不存在的数组值,您需要使用NOT EXISTS
类似的命令:
INSERT INTO groups_join(c_no)
SELECT c_no
FROM yourTempTable yt
WHERE NOT EXISTS (
SELECT 1
FROM groups_join gj
WHERE yt.c_no = gj.c_no
);
由于rep的原因,我无法发表评论,但为了回应您对Didier答案的评论,您可以在创建唯一索引后使用INSERT IGNORE
,而不是INSERT
。使用INSERT IGNORE
时,MySQL不会插入该值,但也会抑制由于尝试插入重复的唯一索引而引发的错误。这将允许您添加唯一索引,而无需编写代码来处理错误
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ...
由于rep的原因,我无法发表评论,但为了回应您对Didier答案的评论,您可以在创建唯一索引后使用INSERT IGNORE
,而不是INSERT。使用INSERT IGNORE
时,MySQL不会插入该值,但也会抑制由于尝试插入重复的唯一索引而引发的错误。这将允许您添加唯一索引,而无需编写代码来处理错误
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ...
Hey@Didier,我正在尝试确定一个不在表中的c_no int列表。这样我就可以插入记录,而不必复制。唯一的索引可以工作,但我们必须在代码中包含错误处理。嘿@Didier,我正在尝试确定一个不在表中的c_no int列表。这样我就可以插入记录,而不必复制。唯一的索引可以工作,但我们必须在代码中包含错误处理。