如果多行匹配,则在mysql中排序

时间:2013-09-10 11:39:47

标签: mysql sorting sql-order-by

我怀疑。如何

ORDER BY time_stamp ASC

如果3个不同的行具有相同的time_stamp值,

将起作用?

好吧我会粘贴我的整个查询

SELECT mail FROM table2 INNER JOIN table1 ON table2.wid = table1.id WHERE table1.time_stamp >= DATE_SUB(NOW(),INTERVAL 10 MINUTE) AND table1.status<>200 GROUP BY table1.Id ORDER BY table1.time_stamp ASC LIMIT 2

请有人帮我解答..

1 个答案:

答案 0 :(得分:0)

如果三行具有相同的时间戳值,则它们将在order by之后显示为三行。以任意顺序。如果您想要稳定排序(也就是总是返回相同值的排序),请在id子句中包含order by

您的group by应该确保您在查询的两行中获得不同的ID。

编辑:

如果您需要所有匹配1个或2个时间戳的记录,请执行以下操作:

select table1.email
from table1 join
     (SELECT time_stamp
      FROM table2 INNER JOIN
           table1
           ON table2.wid = table1.id
      WHERE table1.time_stamp >= DATE_SUB(NOW(),INTERVAL 10 MINUTE) AND table1.status<>200
      ORDER BY table1.time_stamp ASC
      LIMIT 2
     ) limits
     on table1.time_stamp = limits.time_stamp
GROUP BY table1.Id;

这将获取与时间戳匹配的所有table1条记录。您可能需要重复一些where条件。