Я создал систему обмена сообщениями с уникальным идентификатором для каждого сообщения и категорию, чтобы связать связанные связанные потоки. У меня есть категории, хранящиеся в массиве, и я могу отображать каждое сообщение с помощью этого запроса mysql.SELECT WHERE group id IN array ORDER BY и Group By
$getid = $link->prepare("SELECT * FROM `table` WHERE
category IN ('$array')
ORDER BY id DESC");
$getid->execute();
while($msg=$getid->fetch()) {
echo "<br />".$msg['id'];
}
Вышеупомянутое успешно выводит каждое сообщение, которое находится в пределах идентификаторов категории, перечисленных в массиве. Я пытаюсь отобразить только последние списки, т. Е. Сообщения в каждой категории с наибольшим идентификатором.
Я пробовал группу по категориям, которые потерпели неудачу, это дало мне неправильные результаты.
$getid = $link->prepare("SELECT * FROM `table` WHERE
category IN ('$array')
GROUP BY category
ORDER BY id DESC");
$getid->execute();
while($msg=$getid->fetch()) {
echo "<br />".$msg['id'];
}
также не используя MAX (ID)
$getid = $link->prepare("SELECT MAX(id) FROM `table` WHERE
category IN ('$array')
ORDER BY id DESC");
$getid->execute();
while($msg=$getid->fetch()) {
echo "<br />".$msg['id'];
}
Я пробовал несколько вариантов, слишком много, чтобы разработать здесь. Я пытаюсь отображать только последние сообщения (последний идентификатор) в любой заданной категории, самый последний сверху.
Ну, если вы имеете в виду самый большой id, вы имеете в виду один предмет или многие из них? Что нового? мин, часов, дней? Я бы подумал об использовании даты. Таким образом, вы можете SELECT * FROM table WHERE Cat IN $ data AND NOW() - 5days> message_date_field. Этот Синтаксис является интродуцированным, но идеал существует. – MadeInDreams