php - 如何将数学函数应用于 MySQL 查询?

标签 php mysql voting

我有以下查询来确定一个故事收到了多少票:

SELECT s_id, s_title, s_time, (s_time-now()) AS s_timediff, 

(
 (SELECT COUNT(*) FROM s_ups WHERE stories.q_id=s_ups.s_id) -
 (SELECT COUNT(*) FROM s_downs WHERE stories.s_id=s_downs.s_id)
) AS votes

FROM stories

我想为即将到来的故事应用以下数学函数(我认为它是 reddit 使用的)- http://redflavor.com/reddit.cf.algorithm.png

我可以在应用程序端执行该功能(我现在正在这样做),但我无法按该功能提供的排名对其进行排序。

有什么建议吗?

最佳答案

试试这个:

    SELECT s_id, s_title, log10(Z) + (Y * s_timediff)/45000 AS redditfunction 
    FROM (
    SELECT stories.s_id, stories.s_title, stories.s_time, 
    stories.s_time - now() AS s_timediff, 
    count(s_ups.s_id) - count(s_downs.s_id) as X, 
    if(X>0,1,if(x<0,-1,0)) as Y, 
    if(abs(x)>=1,abs(x),1) as Z
    FROM stories 
    LEFT JOIN s_ups ON stories.q_id=s_ups.s_id
    LEFT JOIN s_downs ON stories.s_id=s_downs.s_id
    GROUP BY stories.s_id
    ) as derived_table1

您可能需要检查此声明是否适用于您的数据集。

关于php - 如何将数学函数应用于 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/153825/

相关文章:

php - 将textarea中的html标签转换为富文本

php - 获取同一列上具有不同数据的行

ruby-on-rails - 为什么这个 Ruby on Rails 投票代码不起作用?

php - X-Requested-With header 服务器检查是否足以防止 ajax 驱动的应用程序的 CSRF?

javascript - HTML 初学者帮助

mysql - where子句中的子查询(mysql)

mysql - 有什么方法可以显示 MySQL 表锁定历史记录

java - 尝试从 Eclipse 运行 AppEngine Cloud SQL 应用程序时出现访问被拒绝错误

android - 连接Android与数据库