如何从数据库表中选择除某些id之外的内容

时间:2011-10-25 18:22:48

标签: mysql

我的数据库表包含以下pageid的1,2,3,4,5,6,7,8 - >会增加更多。 我正在使用

$sql ="select * from pages order by pageid";
$result= mysql_query($sql);
while($page= mysql_fetch_array($result)){
echo "$page[pagetitle]";
}

现在我要选择除pageid = 4之外的所有内容!因此它不会显示具有pageid = 4的页面标题并显示其他1,2,3,5,6 --->和任何其他添加。

怎么说选择除了以外的所有!

2 个答案:

答案 0 :(得分:6)

只需添加WHERE条款WHERE pageid <> 4

$sql ="select * from pages WHERE pageid <> 4 order by pageid";
$result= mysql_query($sql);
while($page= mysql_fetch_array($result)){
  echo $page['pagetitle'];
}

或者用PHP变量替换它以使其动态化:

$exclpage = 4;
$sql ="SELECT * FROM pages WHERE pageid <> $exclpage ORDER BY pageid";

如果要排除多个pageid,请使用NOT IN()子句:

// Exclude pages 4,5,9
$sql ="SELECT * FROM pages WHERE pageid NOT IN (4,5,9) ORDER BY pageid";

更新

由于这个答案最近引起了一些注意,因此建议在查询中直接使用预处理语句并参数化变量而不是变量,特别是如果变量是任何用户输入的结果。

$sql ="SELECT * FROM pages WHERE pageid <> ? ORDER BY pageid";
// Bind ? according to your preferred API's method, such as MySQLi::bind_param() or PDO::bindParam()

答案 1 :(得分:0)

就在今天我做了类似的事情,但是使用子查询(我使用t-sql):

select * from pages 
WHERE pageid NOT IN (select pageid from myTable where 'some conditions...') 
order by pageid

希望你发现它有用