【发布时间】:2012-04-10 12:29:00
【问题描述】:
以下查询查找表ids,如果找到例如204720966837,则返回id。
我的问题是我该如何做相反的事情?我想显示那些没有找到的id的id。
SELECT id FROM ids WHERE id IN ('204720966837', '163700377960', '24583115900', '1081617368').
现在我有 204720966837 保存在 ids 中,这就是它打印的内容。我的目标是打印 163700377960, 24583115900, 1081617368
while($assoc = mysql_fetch_assoc($query)) {
echo $assoc['id'];
}
我试过 NOT IN 但我得到了零回报。
【问题讨论】:
-
NOT IN 听起来不错。您确定零回报不是您数据的正确答案吗?真的确定吗?
-
@JohnFx 不回我 163700377960、24583115900、1081617368 怎么可能是对的?我只保存了 204720966837。
-
将问题分解为 2 个步骤 - 如果您直接对您的数据库 (MySQL WorkBench/phpMyAdmin) 运行
NOT IN查询会发生什么?如果数据在那里,我看不出任何NOT IN不起作用的原因...... -
@Basic 我通过 phpMyAdmin 运行它。当我使用
IN时,它会返回我保存的那个。当我使用NOT IN时,我得到 0 行。 -
从ids中选择count();然后从 ID in ('your list') 的 ids 中选择 count() 然后从 ID 不在 ('your list') 中的 ides 中选择 count(*) 如果你 Not in + in 是 count 那么你有一个严重的问题。因为你的数据库不理解集合逻辑。