mysql - 通过将两个查询合并为一个而不是循环来提​​高 SQL 的效率

标签 mysql sql

我有以下代码,想知道如何将它简化为一条 MYSQL 语句

$sql = "SELECT sesionID 
FROM  `juegos_sesiones` 
WHERE  `usuarioID` = ".$_SESSION['MM_UserID'];


$query = mysql_query($sql, $cnx) or die(mysql_error());
//$row_rsPaises = mysql_fetch_assoc($rsPaises);
$exercises = mysql_num_rows($query);

echo $exercises;

//find total points

while( $row = mysql_fetch_array($query)){

$sql2 = 'SELECT correct_answers FROM `juegos_sesiones_detalle`  WHERE  `sesionID`  = '.$row['sesionID'];


$query2 = mysql_query($sql2, $cnx) or die(mysql_error());
$details2 = mysql_fetch_assoc($query2);
$counter = $counter + $details2['correct_answers'];

}

echo '<br />'.$counter;

最佳答案

SELECT sum(correct_answers) as total_correct_answers
FROM `juegos_sesiones_detalle` d
INNER JOIN  `juegos_sesiones` s on s.`sesionID` = d.`sesionID`
WHERE  `usuarioID` = $_SESSION['MM_UserID']

您可以阅读有关联接的信息 here

关于mysql - 通过将两个查询合并为一个而不是循环来提​​高 SQL 的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11773418/

相关文章:

java.sql.SQLException : No suitable driver found for jdbc:mysql://localhost/mydb? autoReconnectForPools=true&useUnicode=true&characterEncoding=utf-8

php - 如何获取MySQL列中两个值之间的行?

Java/Hibernate + HSQLDB java.sql.BatchUpdateException : data exception: string data, 右截断

sql - 合并另一个表中的数据时违反主键

mysql - 循环检查从一张表到另一张表的where条件

mysql - javafx scenebuilder中带有tableview的分页

mysql - 选择具有关键字名称的列

mysql - 多表连接

sql - SQL 连接中的附加条件

mysql - 使用特定的 MAX(field) 分组后返回记录