sql - 在单个查询中获取一些随机记录和一些特定记录?

标签 sql mysql random

所以我有一个封面流样式的图像轮播,由类似这样的查询填充

SELECT foo FROM `imageTable` ORDER BY RAND() LIMIT 0, 12;

我的客户想向其中添加一组永久图像。由于结果的使用方式,如果我可以将这些记录作为原始查询的一部分,那将非常方便。

我试过了

SELECT foo FROM `imageTable` WHERE `id` = 'x' OR `id` = 'y' 
  OR `id` IS NOT NULL ORDER BY RAND() LIMIT 0, 12;

我希望带有 id 的记录一定会在结果集中,但 RAND() 不会打乱整个集合。

所以我的问题是是否有任何单个查询可以提供 x 个永久记录然后提供 y 个随机记录?

//使用 Adrian Serafin 的回答修改查询:

(SELECT * FROM `imageTable` ORDER BY RAND() LIMIT 0, 6)
UNION
(SELECT * FROM `imageTable`  WHERE `id` = 'foo' OR `id` = 'bar' OR `id` = 'baz')

最佳答案

你可以试试sql中的union命令。

select random
  union
select choosed

关于sql - 在单个查询中获取一些随机记录和一些特定记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4728577/

相关文章:

python - 随机导入不起作用(我认为)

sql - 在 PostgreSQL 中使用 LEFT JOIN 而不是 NOT IN

mysql - 从sql文件导入数据库

c# - 将 MySqlDataReader 记录转换为 ObservableCollection<T>

java - 将 java.sql.Timestamp 保存到 mysql 日期时间列会更改时间

php - 提交表单时 session 数据会变得很多

mysql - 用第二个随机行连接 MySQL 中的两个表

c++ - 非重复随机数发生器

sql - SELECT 语句 postgres 中的动态列

javascript - 使用ajax和php删除表html中的行