简体   繁体   English

优化我的SQL查询

[英]Optimize my sql query

I have couple auto increment s.no and respective names in my mysql database. 我在我的mysql数据库中有几个自动增量s.no和各自的names

Currently the queries written are like below. 当前写的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'];
    }

How could this be optimized, to have a single query and assign name1 from s.no=1 , nameN from s.no=N ?? 怎么会这样进行优化,以具有单一的查询和指定name1s.no=1nameNs.no=N

You could do this with an IN clause. 您可以使用IN子句执行此操作。

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

Then, dynamically look up the variable with the string. 然后,使用字符串动态查找变量。

$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'];

}

Pardon my PHP, but something like this would work. 请原谅我的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'];
}

I had to do something similar recently in java where I used a Map to keep track of logical "groups" in a batch query. 我最近在Java中不得不做类似的事情,在Java中我使用Map来跟踪批处理查询中的逻辑“组”。 The code above uses the same idea. 上面的代码使用相同的想法。

If you're only looking to get rows for s.no in (1, 2), then as the poster above says you can use an IN clause. 如果您只想获取(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/en/function.mysql-result.php http://php.net/manual/zh/function.mysql-result.php

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM