Mysql 求解-在特定条件下对行和列求和

Mysql 求解-在特定条件下对行和列求和,mysql,sum,Mysql,Sum,我有一个userid points expires的表,我只想对与特定userid和CURTIME

我有一个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进行比较


你能举例说明你的过期数据是什么样子的吗。。或者说它是哪种数据类型?你能举个例子说明你的过期数据是什么样子的吗。。或者说它是哪种数据类型?