1. 使用派生表(Derived Table) 派生表是从一个SELECT语句中派生出来的表,可以让大家在后续的查询中使用这个表。使用派生表可以达到类似WITH的效果。 SELECT a.id, a.name, b.total FROM user a INNER JOIN ( SELECT user_id, SUM(score) AS total FROM score GROUP BY user_id ) b ON a.id = b.user_id ORDER BY total DESC;
上面的查询中,大家使用了派生表b,它是从score表中派生出来的,包含每个用户的总分数。然后大家再将user表和b表进行关联,输出用户的ID、姓名和分数。
2. 使用变量(Variable) MySQL中的变量可以让大家在查询中存储和传递数据。通过使用变量,大家可以将较为复杂的查询分步进行,达到类似WITH的效果。 SET @total_score := ( SELECT SUM(score) FROM score WHERE user_id = 1 ); SELECT user.id, user.name, @total_score AS total FROM user WHERE user.id = 1;
上面的查询中,大家使用了@total_score变量来存储用户1的总分数。首先大家单独查询了用户1的总分数,并将结果存储在变量中。然后大家再使用这个变量来输出用户的ID、姓名和总分数。