[英]php - MySql select from table with multiple conditions
我需要在“ 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個請求時會產生沖突。 謝謝
您有幾種選擇
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個數組並將結果插入該數組中。
$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[];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.