php - MySql从具有多个条件的表中选择

时间:2013-06-15 04:32:23

标签: php mysql database request

我需要在“main = 1”时从数据库中选择一次,然后在“main = 0”时从数据库中选择全部,并在同一请求中使用 。我可以在一个请求中执行此操作吗? 这是请求

1

$result = $apt->query("SELECT * FROM cat where main='0'");

while($row=$apt->dbarray($result)){

@extract($row);

2

$result = $apt->query("SELECT * FROM cat where main='1'");

while($row=$apt->dbarray($result)){

@extract($row);

我需要在一个请求中将它们组合在一起,因为这会在执行2请求时产生冲突。 感谢

2 个答案:

答案 0 :(得分:2)

你有几个选择

SELECT * from cat where main = '0' or main ='1'; 

SELECT * from cat where main in ('0','1');

如果冲突的含义是指维护两个查询之间的并发,那么这种方式将整个操作包装在事务中是确保并发的唯一方法。

以下是一个示例,说明如何使用上述查询来模拟您提供的代码,但是在单个查询中执行此操作。

  $result = $apt->query("SELECT * FROM cat where main='0' or main = '1' order by main");
  while($row=$apt->dbarray($result)){
        @extract($row);
        switch ($main){
            case 0:
                // do stuff for when main = 0
                break;
            case 1:
                // do stuff for when main = 1
                break;
        }
  }

答案 1 :(得分:1)

1)创建1个数组并将结果插入该数组中。

$array = array();
$result = $apt->query("SELECT * cat where main='0'");

while($row=$apt->dbarray($result)){
    $array['main0'][]  = $row[];
}

$result = $apt->query("SELECT * cat where main='1'");

while($row=$apt->dbarray($result)){
    $array['main1'][]  = $row[];
}

echo json_encode($array);

2)或者您可以使用IN

的1个查询
$result = $apt->query("SELECT * cat where main IN ('0','1')");

while($row=$apt->dbarray($result)){
    $array['main0'][]  = $row[];
}