用于获取maria db中每个类别数据的SQL

时间:2016-10-25 07:50:55

标签: sql mariadb

我需要从每个类别中获取4个随机值。什么应该是maria db的正确sql语法。我附上了一张桌子结构图片。

Please click here to check the structure

我应该编写一些程序,还是可以使用基本的sql语法?

3 个答案:

答案 0 :(得分:0)

如果您只有几行,则可以使用SQL语句执行此操作:

SELECT id, question, ... FROM x1 ORDER BY rand() LIMIT 1

如果只有几行,这样可以正常工作 - 只要有数千行,排序行的开销就变得很重要,你必须对所有行进行排序才能获得一行。

更棘手但更好的解决方案是:

SELECT id, question from x1  JOIN (SELECT CEIL(RAND() * (SELECT(MAX(id)) FROM x1)) AS id) as id using(id);

在SELECTS上运行EXPLAIN会显示差异......

如果您需要不同类别的随机值,请通过union组合选择并添加where子句

答案 1 :(得分:0)

http://mysql.rjweb.org/doc.php/groupwise_max#top_n_in_each_group

但是ORDER BY category, RAND()。 (您的category是博客province。)

注意它是如何使用@variables进行计数的。

如果你有MariaDB 10.2,那么使用它的一个窗口函数。

答案 2 :(得分:-1)

SELECT column FROM table WHERE category_id = XXX 
ORDER BY RAND() 
LIMIT 4

为所有类别执行