在 while 循环内查询可以吗?

2024-05-11

我在一个数据库中有两个表。我正在查询第一个表限制 10,然后循环结果。在 while 循环内,我使用第一个查询中的数据作为参数再次执行另一个查询。以下是该脚本的示例:

<?php

    $con = mysql_connect(host,username,password);
    mysql_select_db(game_server);

    //My first query
    $q1 = mysql_query('SELECT * FROM game_characters ORDER BY score DESC LIMIT 10');

    while($character = mysql_fetch_object($q1)){
    //My second query
        $q2 = mysql_query('SELECT * FROM game_board WHERE id="'.$character->id.'"');
        $player = mysql_fetch_object($q2);
    }
?>

因此,如果我的结果有 100 行,那么第二个查询将执行 100 次。我知道这不好。我怎样才能让它变得更好。有没有一种方法可以在一个查询中完成所有操作?如果 while 循环内有另一个查询,其中使用第二个查询的数据作为参数,该怎么办?

P.S.:我正在为一个在线游戏做一个排名系统。


如果使用 JOIN,则可以在一个查询中完成此操作。

SELECT * FROM game_board AS b 
    LEFT JOIN game_characters AS c ON b.id = c.id 
ORDER BY c.score DESC 
LIMIT 10

您还可以使用嵌套查询

SELECT * FROM game_board AS b WHERE 
  id IN (SELECT id FROM game_characters AS c ORDER BY score DESC LIMIT 10)

您还可以将所有 game_character.id 放入一个数组中,并使用

$sql = "SELECT * FROM game_board AS b WHERE b.id IN (" . implode(', ', $game_character_ids) . ")";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 while 循环内查询可以吗? 的相关文章