Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 检查列表是否在表中_Mysql_Sql - Fatal编程技术网

Mysql 检查列表是否在表中

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

嘿,社区

我目前使用一个临时表来存储数组列表,比较表中不存在的数组并插入它们,但我希望有一种更快、更优化的方法

我的目标是把这个问题归结为一个问题

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_-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列表。这样我就可以插入记录,而不必复制。唯一的索引可以工作,但我们必须在代码中包含错误处理。