mysql - LEFT JOIN 上的 MAX() 值

标签 mysql sql select group-by datediff

我有 2 个表,一个包含一组提案,一个包含对提案进行的投票,两者都使用唯一 ID 连接。

提案表有提案开始时的日期字段,投票表有投票时的日期。当获得足够多的选票时,该提案将被标记为“成功”。我想知道平均需要多少天才能结束投票。

我最初的方法是创建一个查询,通过左连接列出最近投票的每个提案:

SELECT proposals.pr_id, DATEDIFF(MAX(proposals_votes.`date`), proposals.`date`)
FROM proposals
LEFT JOIN proposals_votes ON proposals.pr_id = proposals_votes.pr_id
WHERE STATUS = 'success'

问题是这只返回一行,这让我很吃惊。我原以为 MAX 是在 LEFT JOIN 表上完成的,而不是在结果表上完成的。

有没有办法在 LEFT JOIN 中执行此操作,还是我需要执行子查询?

最佳答案

pr_id 上使用 GROUP BY 子句获取每个提案天数

试试这个:

SELECT p.pr_id, DATEDIFF(MAX(pv.`date`), p.`date`)
FROM proposals p 
LEFT JOIN proposals_votes pv ON p.pr_id = pv.pr_id
WHERE pv.status = 'success'
GROUP BY p.pr_id;

关于mysql - LEFT JOIN 上的 MAX() 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21373980/

相关文章:

php - UPDATE 上的 TIMESTAMP 不适用于 PHP

mysql - 仅备份 myIsam .MYD

mysql查询选择父子递归

php - 有没有办法在 SQL 查询中执行条件逻辑?

java - 使用 JSoup 选择特定的 <tr> 标签

mysql - 如何按同一列 2x 排序?

php - 将多行插入从while循环获取的mysql

mysql - 为什么sql order by 很慢?

MySQL - 如何在一个查询中选择多列?

python - 使用 python 遵循正态分布从列表中选择一个元素