2016-07-03 3 views
1

Я только начиная с MySQL, так что я хотел бы знать, как я могу выбрать только 5 случайные строки в последние 50 записей моей базы данных? Надеюсь, ты понимаешь мой вопрос.Выберите только 5 случайных строк в последние 50 записей

Я использую PDO и то, что у меня сейчас это:

$otherChoiseRig = $bdd->query("SELECT * FROM articulos WHERE cat = '$ArtCat' ORDER BY RAND() "); 
$otherChoiseRig2 = $otherChoiseRig->fetchAll(PDO::FETCH_ASSOC); 

Затем я использую PHP Еогеасп букле ...

Спасибо

+0

Вам нужны случайные 5 строк по столам? –

+0

Да, но только в las 50 записей – Boris

+0

Все ли таблицы имеют аналогичную структуру таблицы? –

ответ

2

Задача определяет последние 50 записей. Если у вас есть автоинкрементных идентификатор, вы можете сделать:

SELECT a.* 
FROM (SELECT a.* 
     FROM articulos a 
     WHERE cat = '$ArtCat' 
     ORDER BY id DESC 
     LIMIT 50 
    ) a 
ORDER BY RAND() 
LIMIT 5; 

Ключевая идея заключается в подзапрос, чтобы получить последние 50 записей, а затем окончательный запрос, чтобы получить 5 случайных строк. Подзапрос должен указать, как вы идентифицируете последние 50.

+0

Спасибо .. Но что такое? – Boris

+0

@Boris это называется псевдоним. http://dev.mysql.com/doc/refman/5.7/en/problems-with-alias.html - http://dev.mysql.com/doc/refman/5.7/en/select.html –

+0

@ Борис спрашивает Гордона; это его ответ. –

0

просто добавить ограничение

Я предполагаю, что в вашем столе у ​​вас есть столбец даты, чтобы мы могли получить последние 50

SELECT * FROM (SELECT * FROM articulos WHERE cat = '$ ArtCat' ORDER BY created_tiem desc limit 50) t order by RAND() limit 5;

+0

Это выберет 5 рандов на всей базе данных – Boris

+0

Я предполагаю, что вы создали_time или какой-то столбец, чтобы получить последние 50 заказов –

0
$otherChoiseRig = $bdd->query("SELECT * FROM articulos WHERE cat = '$ArtCat' ORDER BY RAND() LIMIT 5 "); 
$otherChoiseRig2 = $otherChoiseRig->fetchAll(PDO::FETCH_ASSOC);