如何查找不在此数组中的所有记录? (MySql)
Posted
技术标签:
【中文标题】如何查找不在此数组中的所有记录? (MySql)【英文标题】:How to find all records which are NOT in this array? (MySql) 【发布时间】:2011-03-30 03:21:54 【问题描述】:我有一个数组,其中包含一堆 ID:s...
我不知道如何在 mysql 中编写查询来查找不在此数组中的所有记录。
SELECT * FROM main_table WHERE ..........
有什么想法吗?
谢谢
【问题讨论】:
【参考方案1】:像这样:
$str = implode(',', $your_array);
上述语句将数组转换为逗号分隔的字符串。
"SELECT * FROM main_table WHERE id NOT IN ('$str')"
更多信息:
http://dev.mysql.com/doc/refman/5.0/en/any-in-some-subqueries.html【讨论】:
小调整:$str = count($your_array) != 0 ? implode(',', $your_array); : "null";
。 IN
对空括号反应不佳。
我也是这么做的。但随着我的阵列大小增加,我收到“MySQL 服务器已消失”错误。我找到了几个解决方案,如何调整 MySQL 以处理此类请求,但我觉得这个解决方案不太适合大型数组。
我尝试将这条 sql 语句应用于 WordPress wp_users 表和 user_email 字段,以逗号分隔的五个电子邮件地址的字符串作为列表。它不起作用,返回所有电子邮件地址。我刚刚发现它不起作用,因为列表(或者如果您使用 implode())没有用 ' (打开和关闭撇号)包装每个列表项。因此, implode(",",$str) 产生“user1@gmail.com,user2@mydomain.com,user3@mydomain.com”。这使sql失败。该列表必须像这样构造:WHERE user_email NOT IN ('user1@gmail.com','user2@mydomain.com','user3@mydomain.com')";【参考方案2】:
SELECT *
FROM main_table
WHERE id NOT IN(1, 2, 3)
【讨论】:
只有代码的答案在 *** 上的价值很低。以上是关于如何查找不在此数组中的所有记录? (MySql)的主要内容,如果未能解决你的问题,请参考以下文章