[英]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
?? 怎么会这样进行优化,以具有单一的查询和指定
name1
从s.no=1
, nameN
从s.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.