【发布时间】:2013-03-29 19:48:25
【问题描述】:
我有以下疑问:
SELECT t.ID, t.caseID, time
FROM tbl_test t
INNER JOIN (
SELECT ID, MAX( TIME )
FROM tbl_test
WHERE TIME <=1353143351
GROUP BY caseID
ORDER BY caseID DESC -- ERROR HERE!
) s
USING (ID)
似乎只有在内部连接中使用ORDER BY 才能得到正确的结果。这是为什么?我正在使用 ID 进行连接,所以订单应该没有影响。
如果我删除订单,我会从数据库中获得太旧的条目。
ID是主键,caseID是一种具有多个不同时间戳的条目的对象。
【问题讨论】:
-
您能用文字解释一下您要做什么吗?
-
您需要在子查询中
GROUP BYID列。 MySQL 允许你正在做的事情,但返回不可预知的结果...... -
你依赖于 MySQL 破坏的非标准和非保证
group by行为。 -
派生表(又名“子查询”)中的
order by没有任何意义(至少不是没有限制)。您应该对整体结果进行排序。 -
@Mike Brant:这就是我要做的事情:stackoverflow.com/questions/13216762/…
标签: mysql inner-join