【发布时间】:2011-12-25 21:44:07
【问题描述】:
我到处搜索,但似乎无法正确表达我的问题以获得我想要的结果(我相信这真的很容易,但我一直在打我的头反对它很久了!)
我有以下疑问:
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
content 包含文章的内容,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
【问题讨论】:
-
每张表都有哪些id字段?是 co.id = bu.id 还是 bu 中有另一个 id 字段指示特定备份的内容 id?
-
co.id = bu.articleID(有bu.id但只是索引,与co.id无关)
-
coralated 子查询和 max 应该可以解决问题。或带有 max 的子查询(但它会更慢)This 给你一个想法。接受的答案使用较慢的方法,有一个显示相关子查询的第二个示例。