这个问题很难量化,所以我第一次可能没有正确措辞这个问题。
我有一个类似于以下格式的表格:
| id | other_id | timestamp |
| 1 | 1 | 2012-01-01 |
| 2 | 1 | 2012-01-02 |
| 3 | 2 | 2012-01-02 |
我正在尝试做的是,给定“id”为 2 的记录和类似的记录,其中“id”列值是已知的并且是唯一的,并且“other_id”已知与之对应,我该如何找到,对于每一个,记录的“id”具有相同的“other_id”,但第一个低于我已知的“id”。
例如
$arrKnownIds = array (
0 => array('id'=>2,'other_id'=>1),
1 => array('id'=>3,'other_id'=>2)
);
有了这些信息,我想运行一个查询,结果如下:
while($row = mysql_fetch_assoc($result)) {
$arrPreviousIds[$row['other_id']] = $row['id'];
// having in this case values of:
// $row['other_id'] = 2;
// $row['id'] = 1;
}
如果我需要使用 UNION、多个 php 查询语句或是否有其他方法来解决这个问题,我无法完全确定。
任何关于如何解决这个问题的想法都非常感谢。
谢谢 :)
编辑- 原始查询采用以下形式:
SELECT DISTINCT(`other_id`), MAX(`id`), MAX(`timestamp`)
FROM `event`
GROUP BY `other_id`
ORDER BY `id` DESC, `other_id` ASC
LIMIT 0, 10
// 这旨在获取最后 10 个唯一事件并查找它们发生的时间。
// 由此,我然后尝试查找它们之前发生的时间。