检查列表是否在表中

时间:2015-08-20 14:50:29

标签: mysql sql

Hey Stackoverflow社区!

我目前使用临时表来存储数组列表,比较表中不存在哪些数组并插入那些但我希望有更快更优化的方法。

我的目标是将其归结为一个查询

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是否已经在group_join表中与g_no相同,所以我没有重复项。

3 个答案:

答案 0 :(得分:3)

我猜您正在寻找IN关键字。

SELECT * FROM myTable WHERE field IN (myList)

如果您希望g_no字段具有唯一值,为什么不添加unique索引? MySQL Document - Create Index

答案 1 :(得分:1)

要插入groups_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
        );

答案 2 :(得分:1)

由于代表我无法发表评论,但是在回答您对Didier的回答的评论时,您可以在INSERT之后使用INSERT IGNORE来创建您的{{1} }}。当您使用unique index时,MySQL不会插入该值,但也会抑制因尝试插入重复的INSERT IGNORE而引发的错误。这将允许您添加唯一索引,而无需编写代码来处理错误。

unique index

https://dev.mysql.com/doc/refman/5.5/en/insert.html