gpt4 book ai didi

MySQL 随机获取 10 行,其中 3 行预定义行需要成为结果的一部分并位于开头

转载 作者:太空宇宙 更新时间:2023-11-03 12:22:47 24 4
gpt4 key购买 nike

我有一个 ID 从 1 到 20 的表,我需要获取 10 行(随机),但是 10 行中的 3 行是预定义的并且需要位于结果列表的开头 - 在一个 MySQL 语句中:

这可行,但生产表包含超过 500K 行:

SELECT id 
FROM tableName
WHERE id IN (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
ORDER BY FIELD(id, 5,6,7) DESC, RAND()
LIMIT 10

我需要这样的东西:

SELECT id 
FROM tableName
WHERE id IN (5,6,7,*)
ORDER BY FIELD(id, 5,6,7) DESC, RAND()
LIMIT 10

...什么是正确的语法?

最佳答案

你可以使用这样的语句:

SELECT
id
FROM
(
SELECT
id,
IF(id IN (5,6,7),1,0) AS priority
FROM tableName
) t
ORDER BY priority DESC, RAND()
LIMIT 10

关于MySQL 随机获取 10 行,其中 3 行预定义行需要成为结果的一部分并位于开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19053074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com