SQL,SELECT`column` FROM`table` ORDER BY RAND()LIMIT 10

时间:2014-06-12 21:09:08

标签: sql

我有一个包含id的项目表,如果我点击其中一个ID,我想显示我点击的那个,然后是9个随机条目。


以下查询将随机选择10行:

SELECT column FROM table ORDER BY RAND() LIMIT 10
  • 我如何首先显示我选择的项目,然后显示随机选择的9个项目?
  • 这个问题的合适查询是什么?

2 个答案:

答案 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中获得另外九行。