limit子句中的Mysql子查询

limit子句中的Mysql子查询,mysql,Mysql,在mysql的limit子句中可以有子查询吗?我试图在一次查询中只从同一个表中选择总行数的10% SELECT * FROM table LIMIT (SELECT (10 * COUNT(*)/100) FROM table); 关于如何实现这一点,有什么建议吗?您问: 在mysql的limit子句中可以有子查询吗 答案基本上是否定的 请阅读以下内容: LIMIT子句可用于约束返回的行数 通过SELECT语句。LIMIT接受一个或两个数值参数, 都必须是非负整数常量,并且 例外情况: 在准备

在mysql的limit子句中可以有子查询吗?我试图在一次查询中只从同一个表中选择总行数的10%

SELECT * FROM table LIMIT (SELECT (10 * COUNT(*)/100) FROM table);
关于如何实现这一点,有什么建议吗?

您问:

在mysql的limit子句中可以有子查询吗

答案基本上是否定的

请阅读以下内容:

LIMIT子句可用于约束返回的行数 通过SELECT语句。LIMIT接受一个或两个数值参数, 都必须是非负整数常量,并且 例外情况:

在准备好的语句中,可以使用? 占位符标记

在存储程序中,可以使用 整数值例程参数或局部变量


如果要随机选择约10%的行:

SELECT *
FROM table
WHERE rand() < 0.1;
它不是100%精确的,但对于大多数应用程序来说,它已经足够好了。

如果需要前10%的变量,可以使用用户变量,如下所示

SELECT *
FROM (
    SELECT @seq := @seq + 1 AS seq, table.* FROM table, (SELECT @seq := 0) AS init1,
    (SELECT @ten_percent := (SELECT (10 * COUNT(*)/100) FROM table)) AS init2
) x
WHERE seq < @ten_percent;