Функция SQL для получения 1 статической и 5 случайных записей из одного столбца - PullRequest
0 голосов
/ 09 июня 2011

Кто-нибудь знает, как выбрать записи из таблицы SQL, где первая запись из столбца A равна X, и выбрать другие 5 случайных (1-10) записей из того же столбца.

Мне нужно извлечь всего 6 записей одним SQL-запросом, где первая запись всегда статическая, а остальные пять случайные.

Табличные машины

ID      COLOUR      CAR

1        green      carX

2        blue       carX

3        green      carY

4        red        carZ

5        black      carA

6        yellow     carB

7        black      carB

Требуемый результат:

первая запись carX, синяя (статическая)

и 5 случайных

все записи должны отличаться друг от друга - уникально

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Вы можете использовать UNION до SELECT статической строки и комбинировать ее с SELECT случайных строк, если у вас есть определенное условие.

SELECT * FROM cars WHERE column = 'static condition'
UNION
(SELECT * FROM cars WHERE column != 'static condition' ORDER BY RAND() LIMIT 5)

Примечание: Если у вас нет проблем с статическим условием , прокомментируйте более подробно о вашей записи static .

0 голосов
/ 09 июня 2011

Альтернатива, для которой не требуется 2 выбора и объединения, это ORDER BY FIELD ;

в моем запросе, я использовал поле id, чтобы заставитьконкретная статья наверх.

08:34:47 (7) > select id, title FROM articles ORDER BY FIELD(id, 181634, id), RAND() LIMIT 6;
+--------+-----------------+
| id     | title           |
+--------+-----------------+
| 181634 | This is a title | 
| 166289 | This is a title | 
| 152080 | This is a title | 
| 170037 | This is a title | 
| 135411 | This is a title | 
| 171414 | This is a title | 
+--------+-----------------+
6 rows in set (0.06 sec)

08:35:09 (8) > select id, title FROM articles ORDER BY FIELD(id, 181634, id), RAND() LIMIT 6;
+--------+-----------------+
| id     | title           |
+--------+-----------------+
| 181634 | This is a title | 
| 104905 | This is a title | 
| 103044 | This is a title | 
| 129612 | This is a title | 
| 104157 | This is a title | 
| 160612 | This is a title | 
+--------+-----------------+
6 rows in set (0.06 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...