簡體   English   中英

優化我的SQL查詢

[英]Optimize my sql query

我在我的mysql數據庫中有幾個自動增量s.no和各自的names

當前寫的queries如下。

    $result = mysql_query ("SELECT name FROM table WHERE s.no= '1'") or die (mysql_error ());
    while($row = mysql_fetch_array($result)){

    $name1= $row['name'];
    }

    $result = mysql_query ("SELECT name FROM table WHERE s.no= '2'") or die (mysql_error ());
    while($row = mysql_fetch_array($result)){

    $name2= $row['name'];
    }

怎么會這樣進行優化,以具有單一的查詢和指定name1s.no=1nameNs.no=N

您可以使用IN子句執行此操作。

 SELECT name, s.no as no FROM table WHERE s.no IN ('1', '2')

然后,使用字符串動態查找變量。

$varName = 'name'.$row['no'];
$$varName = $row['name];
$result = mysql_query ("SELECT name,s.no numb FROM table WHERE s.no= '1' OR s.no= '2'") or die (mysql_error ());
while($row = mysql_fetch_array($result)){

if($row['numb']==1)
   $name1= $row['name'];
else if($row['numb']==2)
   $name2= $row['name'];

}

請原諒我的PHP,但是這樣可以。

$name = [];

$result = mysql_query ("SELECT s.no, name FROM table") or die (mysql_error ());
while($row = mysql_fetch_array($result)) {
    $index = $row['no'];
    $name[$index] = $row['name'];
}

我最近在Java中不得不做類似的事情,在Java中我使用Map來跟蹤批處理查詢中的邏輯“組”。 上面的代碼使用相同的想法。

如果您只想獲取(1,2)中s.no的行,則如上面的張貼者所述,您可以使用IN子句。

$sql = "SELECT name FROM table WHERE s.no IN ('1', '2') order by s.no asc";
$result = mysql_query($sql);
$name1 = mysql_result($result, 0, 0);//fetches row 0, column 0
$name2 = mysql_result($result, 1, 0);//fetches row 1, column 0

http://php.net/manual/zh/function.mysql-result.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM