【发布时间】:2010-06-24 20:30:29
【问题描述】:
好的,这就是问题所在。目前我正在使用 symfony 框架来开发一个网络应用程序。我在后端使用 MySQL,但希望将我的查询保持在他们的原则格式中,以避免在我需要更改数据库时出现任何问题。
在 Web 应用程序的一个部分中,我正在查找由任何不同用户关联的最后一条评论,按日期排序。可以有来自多个用户的多个 cmets 都在同一日期和时间,但此查询应仅获取基于日期的最后一条评论。
comments table
-----------------------------------------------------------------
| comment_id | user_id | comment | date_time |
-----------------------------------------------------------------
| 1 | 2 | Test_1 | 2010-01-01 00:00:00 |
| 2 | 2 | Test_2 | 2010-02-01 00:00:00 |
| 3 | 2 | Test_3 | 2010-03-01 00:00:00 |
| 4 | 4 | Test_4 | 2010-04-01 00:00:00 |
| 5 | 4 | Test_5 | 2010-05-01 00:00:00 |
| 6 | 4 | Test_6 | 2010-06-01 00:00:00 |
| 7 | 3 | Test_7 | 2010-07-01 00:00:00 |
| 8 | 2 | Test_8 | 2010-08-01 00:00:00 |
| 9 | 3 | Test_9 | 2010-09-01 00:00:00 |
-----------------------------------------------------------------
上面是一个示例表。我运行的查询应该返回如下数据。
-----------------------------------------------------------------
| comment_id | user_id | comment | date_time |
-----------------------------------------------------------------
| 9 | 3 | Test_9 | 2010-09-01 00:00:00 |
| 8 | 2 | Test_8 | 2010-08-01 00:00:00 |
| 6 | 4 | Test_6 | 2010-06-01 00:00:00 |
-----------------------------------------------------------------
子查询的最少数量显然会更好。用户将来发表评论时,date_time 可能会更低。
看起来很简单,但事实证明相当困难......
【问题讨论】:
-
我不知道教义语法,但我知道如何在 ANSI SQL 中执行此操作,该操作适用于大多数数据库。那对你有用吗?或者,如果您在教义中需要它,也许您可以自己将其翻译成教义?
-
如果你想要一个搜索词,这是一个典型的“groupwise maximum”问题或“greatest per group”。
标签: sql symfony1 greatest-n-per-group sql-order-by