NOT IN选择查询不起作用

时间:2012-02-27 06:48:02

标签: php mysql

我想从数据库中获取一些值,除了已经获取的值,

这是查询,我想获取不在第一次获取的值,

$qry="select value,name,number from test where value=10";
$rslt=mysql_query($qry);
$arr=mysql_fetch_assoc($rslt);

$qry2="select value,name,number from test where value NOT IN ('$rslt')";
$rslt2=mysql_query($qry2);

while($arr2=mysql_fetch_assoc($rslt2))
{
  echo "<pre>";
  print_r($arr2);
  echo "<pre>";
}

5 个答案:

答案 0 :(得分:3)

为什么不否定第一个查询以获得第二个查询?

select value,name,number from test where value = 10

然后:

select value,name,number from test where value != 10 or value is null

如果列

中没有空值,则可以省略空检查

Btw:错误在这里:

NOT IN ('$rslt')

NOT IN需要逗号分隔的值列表,例如NOT IN (1, 5, 6)或子查询,并且您的语句不会导致其中任何一个。

答案 1 :(得分:0)

$rsltresource类型的变量:http://www.php.net/manual/en/function.mysql-query.php

你不能把它放到mysql语句中并期望它能够正常工作。您可以将其更改为$qry$qry2="select value,name,number from test where value NOT IN ($qry)";

答案 2 :(得分:0)

您在IN语句中使用$ rslt而不是$ arr ...并且记住您应该首先使用$arrimplode转换为以逗号分隔的列表

答案 3 :(得分:0)

MySQL的IN函数需要一个以逗号分隔的文字值或子查询。你正在放入一个关联数组。试试这个:

$qry="select value,name,number from test where value NOT IN (select value,name,number from test where value=10)";

答案 4 :(得分:0)

将val保存到变量并尝试下面的代码

$val=10;

$qry="select value,name,number from test where value=$val";
$rslt=mysql_query($qry);
$arr=mysql_fetch_assoc($rslt);
$qry2="select value,name,number from test where value NOT IN ($val)";
$rslt2=mysql_query($qry2);

while($arr2=mysql_fetch_assoc($rslt2))
{
  echo "<pre>";
  print_r($arr2);
  echo "<pre>";
}