我到处都搜索过,但似乎无法找到正确的方法来表达我的问题以获得我想要的结果(我确信这很容易,但我一直在打我的脑袋反对它多年!)
我有以下查询:
SELECT co.title, co.content, co.id, bu.backupDate, bu.backupBy, COUNT(bu.id) AS totalBackups
FROM content co, wol_content_backup bu
WHERE co.car_model = '6-110'
AND co.subcategory = 'introduction'
ORDER BY bu.backupDate DESC
内容包含文章的内容,wol_content_backup包含文章的备份。 bu.backupDate是一个包含备份日期的DATETIME字段。
我想要的是返回上次备份的日期(bu.backupDate)(通常有几个,因为我的大多数管理员都经过良好的培训并在修改文章之前按下“备份”按钮!)数据库中的备份数(COUNT(bu.id)AS totalBackups)
但是,我的查询当前只返回一个结果,这是第一个备份(不是最新的)我想要的是从内容中选择具有最新相应备份日期的行。查询工作正常没有COUNT(bu.id)所以我猜这是问题,但不知道如何解决它...
任何帮助都会非常感激!
圣诞节快乐!
修改
感谢您的帮助!我尝试了你所有的建议(并且沿途学到了大量的新东西!)
通过提醒我MAX()函数,你们都把我放在了正确的轨道上,最终导致了以下功能查询:
SELECT co.title, co.content, co.id, MAX(bu.backupDate) AS backupDate, bu.backupBy, COUNT(bu.id) AS totalBackups
FROM content co, wol_content_backup bu
WHERE co.car_model = '6-110'
AND co.subcategory = 'introduction'
输出我想要的东西!
非常感谢在圣诞节帮助遇险的编码人员! :)
的Seb
答案 0 :(得分:0)
我无法提供关于我的头类型的语法,但考虑一个子查询来获取最新的备份日期并将其添加到主查询的WHERE子句中。然后你可以松开ORDER子句,因为你会得到一个结果(并且还会丢失COUNT)。
答案 1 :(得分:0)
这应该给你想要的。关键是要创建一个派生表,它可以为您处理的文章提供最新的备份。然后在外部查询中使用该信息来获取您的标题,内容和备份日期:(评论散布为非代码)
SELECT co.title, co.content, co.id,
bu.backupBy,
mostrecent.MostRecentBackup,
mostrecent.NumOfBackups
FROM content co inner join
这是执行上次备份工作的派生表以及包含它的记录的ID
(select bu.id
max(bu.backupdate) as MostRecentBackUP,
count(bu.id) as NumOfBackups
from
wol_content_backup bu
Group by bu.id
) mostrecent
然后使用articleid
转到内容表on co.id = mostrecent.articleid
并返回wol_content_backup表以获取backupBy字段
inner join wol_content_backup buouter on
mostrecent.id = buouter.id
WHERE co.car_model = '6-110'
AND co.subcategory = 'introduction'
ORDER BY MostRecentBackup DESC