检查数据库中是否存在值数组

时间:2019-05-10 11:26:34

标签: mysql sql stored-procedures

我有一个数据库表"Mytable",其中包含2列("colimn1""column2")。我还有一个column1值列表,在这里我需要与表进行交叉检查以验证值是否存在于表中。查询的结果应显示列表中所有不存在的值。

例如

Value list = ["c1","c2", "c3", "c4"]
Values in the database = C2 and C3

因此,与数据库进行交叉检查后,结果应为c1和c4。

我尝试了if条件,但是随后我必须为每一行编写单独的查询

select if(exists(select column2_val from myTable where column2_val = '3c2'), 'display when true', 'display when false');

我在这里提供一列column2值的长列表,我想要显示表中没有的所有值作为最终结果吗?

2 个答案:

答案 0 :(得分:0)

理想情况下,如果您可以在表中检查这些值,则这样做会更好。然后,您可以轻松使用这样的查询:

SELECT t1.column2_val
FROM
(
    SELECT 'c1' AS column2_val UNION ALL
    SELECT 'c2' UNION ALL
    SELECT 'c3' UNION ALL
    SELECT 'c4'
) t1
WHERE NOT EXISTS (SELECT 1 FROM myTable t2 WHERE t1.column2_val = t2.column2_val);

答案 1 :(得分:0)

您必须创建一个临时表并插入任何列表,然后必须考虑这两个表编写查询以查找不存在的表。

尽管会话结束后临时表将被销毁,但您仍然需要确保临时表的值不会占用太多内存,这会影响性能