[英]Combining two MYSQL Queries into a single one
我正在尝试将两个MYSQL查询合并为一个。 我想做的是选择每天添加的第一行和最后一行,然后从当天的第一列中减去该天的最后一列,然后输出。 这将为我带来当天那场比赛的XP净收益。
以下是我的两个查询,它们的唯一区别是按DESC与ASC排序日期。 我要互相减去的数据库中的列是“ xp”
$query = mysql_query("
SELECT * FROM (SELECT * FROM skills WHERE
userID='$checkID' AND
skill = '$skill' AND
date >= ".$date."
ORDER BY date DESC) as temp
GROUP BY from_unixtime(date, '%Y%m%d')
");
$query2 = mysql_query("
SELECT * FROM (SELECT * FROM skills WHERE
userID='$checkID' AND
skill = '$skill' AND
date >= ".$date."
ORDER BY date DESC) as temp
GROUP BY from_unixtime(date, '%Y%m%d')
");
SELECT FROM_UNIXTIME(date, '%Y%m%d') AS YYYYMMDD, MAX(xp)-MIN(xp) AS xp_gain
FROM skills
WHERE userID = '$checkID'
AND skill = '$skill'
AND date >= $date
GROUP BY YYYYMMDD
假设XP一直在增加,因此不需要使用时间来查找开始和结束值。
如果这不是正确的假设,那么您想要的是这样的:
SELECT first.YYYYMMDD, last.xp - first.xp
FROM (subquery1) AS first
JOIN (subquery2) AS last
ON first.YYYYMMDD = last.YYYYMMDD
将subquery1
替换为返回每天第一行的查询,将subquery2
替换为返回每天最后一行的查询。 您在问题中发布的查询不会执行此操作,但是您可以找到许多SO问题,这些问题说明了如何获得每个组的最高或最低行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.