谁知道如何从列A中的第一条记录等于X的SQL表中选择条目,并从同一列中选择其他5个随机(1-10)记录。
我需要通过一个SQL查询检索总共6个条目,其中第一个条目始终是静态的,其他五个条目是随机的。
tbl汽车
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个随机
所有记录应彼此不同-唯一
发布于 2011-06-09 11:40:09
您可以使用UNION来SELECT
静态行,并将其与随机行的SELECT
组合,前提是您有特定的条件。
SELECT * FROM cars WHERE column = 'static condition'
UNION
(SELECT * FROM cars WHERE column != 'static condition' ORDER BY RAND() LIMIT 5)
注意:如果您没有遇到静态条件的问题,请使用有关您的静态记录的更多详细信息进行注释。
发布于 2011-06-09 12:37:48
另一种方法是ORDER BY FIELD,它不需要两个selects和一个联合;
在我的查询中,我使用了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)
https://stackoverflow.com/questions/6292150
复制