Mysql 求解-在特定条件下对行和列求和
我有一个userid points expires的表,我只想对与特定userid和CURTIMEMysql 求解-在特定条件下对行和列求和,mysql,sum,Mysql,Sum,我有一个userid points expires的表,我只想对与特定userid和CURTIME
select
*, sum(points) as points
from infraction
where
userid=13999
and CURTIME() < expires;
但它会返回整列分数,而不会审查以下条件
解决:
对不起!我的坏,其余行在条件条件条件中
我的解决方案是很好的解决方案,其他所有的助手也都这么做了,我没有回复他们
谢谢所有的好帮手,你太棒了
感谢所有帮助人员。您没有GROUP BY子句,但正在选择所有列。您需要添加以下内容:
SELECT
inf.*,
infsum.points
FROM
(SELECT SUM(points) AS points, id FROM infraction GROUP BY id) AS infsum
JOIN infraction AS inf ON inf.id = infsum.id
WHERE inf.userid=13999 AND CURTIME() < inf.expires
这使用一个子查询来获取按id求和的点,用正确的列名替换id,并用该id将其与整个表连接起来。同样,用正确的列替换inf.id和infsum.id。您没有GROUP by子句,但正在选择所有列。您需要添加以下内容:
SELECT
inf.*,
infsum.points
FROM
(SELECT SUM(points) AS points, id FROM infraction GROUP BY id) AS infsum
JOIN infraction AS inf ON inf.id = infsum.id
WHERE inf.userid=13999 AND CURTIME() < inf.expires
这使用一个子查询来获取按id求和的点,用正确的列名替换id,并用该id将其与整个表连接起来。同样,用正确的列替换inf.id和infsum.id。您需要选择有限的集合,然后对它们求和
slect sum(points) as points from (select
*
from infraction
where
userid=13999
and CURTIME() < expires
) as temp1
您需要选择有限的集合,然后对它们求和
slect sum(points) as points from (select
*
from infraction
where
userid=13999
and CURTIME() < expires
) as temp1
过期时间是一个时间还是一个完整的日期时间?在第二种情况下,您需要与现在进行比较,而不是与CURTIME进行比较
过期时间是一个时间还是一个完整的日期时间?在第二种情况下,您需要与现在进行比较,而不是与CURTIME进行比较
你能举例说明你的过期数据是什么样子的吗。。或者说它是哪种数据类型?你能举个例子说明你的过期数据是什么样子的吗。。或者说它是哪种数据类型?