我有 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/