【发布时间】:2015-11-27 21:53:49
【问题描述】:
好的,如果我只比较几个值,通常我会在 PHP 中做这样的事情:
// I want to get 1
$a = array(1,2);
$b = array(2);
// It produces 1
$result = array_diff($a, $b);
但在这种情况下,$b 是 MySQL 中的一个大表,有数百万行,将其检索到 PHP 会很疯狂,所以我的 DBMS (MySQL) 必须完成这项工作。
我该怎么做:
-- I need treating $a as a column
SELECT $a NOT IN (SELECT id FROM b);
示例
表 B
|id|
2
3
4
数组A
array(1, 2, 3, 5);
结果
A - B = A - INTERSECT(A,B) = [1, 5]
示例 2
This is 正是我需要的 SQL 服务器。有什么想法可以在 MySQL 中做类似的事情吗?
注意:A 大约有 5000 个 id,所以:
SELECT 1
UNION SELECT 1
UNION SELECT 1
UNION SELECT 2
UNION SELECT 5
...
...产生#1064 - memory exhausted
【问题讨论】:
-
这听起来和PHP无关。如果您发布有关数据库结构的一些信息,您可能会得到一些帮助。在 www.sqlfiddle.com 上设置一些东西会更好。
-
@miken32 我认为不需要知道数据库结构,我只是想将ids与ids进行比较
-
@Alberto 所以你想获取数据库中不存在的ID,对吧?
-
@FrederickMarcoux 是的,就是这样
-
@Alberto 看看:dba.stackexchange.com/a/37628