Это было сложно определить количественно, поэтому у меня может не возникнуть вопрос, который правильно сформулирован в первый раз.Выберите предыдущую запись с несколькими условиями в mysql
У меня есть таблица следующий формат, подобный следующему:
| id | other_id | timestamp |
| 1 | 1 | 2012-01-01 |
| 2 | 1 | 2012-01-02 |
| 3 | 2 | 2012-01-02 |
То, что я пытаюсь сделать это, учитывая запись с «ид» 2, и подобные записи, для которых столбец «Идентификатор» значение известно и уникально, и известно, что «other_id» соответствует ему, как мне найти для каждого «id» записи, имеющей тот же «other_id», но первый более низкий «id», чем тот, который я уже знать.
E.g.
$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 запросов или если есть другой способ.
Любые мысли о том, как решить эту проблему, очень ценятся.
Спасибо :)
Edit - Исходный запрос имеет следующий вид:
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 уникальных событий и найти, когда они произошли.
// Из этого я затем пытаюсь найти, когда они были ранее.
Я не уверен, что я понимаю, чего вы хотите. Учитывая id 2, он должен возвращать id 1, потому что это самый высокий id менее 2 с other_id = 1. Правильно ли это? Итак, учитывая id 3, если он возвращает null, поскольку нет более низкого id с other_id = 2? – nnichols
@nnichols, Да, это точно так, как вы описали его. – MyStream