我有一个包含id的项目表,如果我点击其中一个ID,我想显示我点击的那个,然后是9个随机条目。
以下查询将随机选择10行:
SELECT column FROM table ORDER BY RAND() LIMIT 10
答案 0 :(得分:1)
听起来你只想要一个工会。
SELECT column FROM table LIMIT 1
UNION ALL
SELECT column
FROM table
ORDER BY RAND()
LIMIT 9
您可能需要考虑两件事。首先,如果您没有在第一个查询中输入非随机顺序,则无法保证您将获得第一行的内容,甚至不保证它是否一致。此外,您最终可能会选择相同的第一行两次。为避免这种情况,您可以尝试:
SELECT column FROM table ORDER BY SOME_COLUMN LIMIT 1
UNION ALL
SELECT column
FROM table
WHERE COLUMN NOT IN(SELECT column FROM table ORDER BY SOME_COLUMN LIMIT 1)
ORDER BY RAND()
LIMIT 9
答案 1 :(得分:0)
我建议在order by
中使用多个条件:
SELECT `column`
FROM `table`
ORDER BY (id = SELECTEDID) DESC, RAND()
LIMIT 10;
这将确保两件事。首先,您选择的行将是第一个(因为他的顺序)。第二,你将在10中获得另外九行。