是否可以在mysql的limit子句中包含子查询?我只想在一个查询中选择同一个表中总行数的10%。
SELECT * FROM table LIMIT (SELECT (10 * COUNT(*)/100) FROM table);
关于如何实现这一目标的任何建议?
答案 0 :(得分:1)
你问:
是否可以在mysql的limit子句中包含子查询?
答案基本上没有。
阅读本文:
http://dev.mysql.com/doc/refman/5.6/en/select.html
LIMIT子句可用于约束返回的行数 通过SELECT语句。 LIMIT需要一个或两个数字参数, 这些必须都是非负整数常数 例外:
在预准备语句中,可以使用?指定LIMIT参数? 占位符标记。
在存储的程序中,可以使用指定LIMIT参数 整数值的例程参数或局部变量。
答案 1 :(得分:1)
如果您需要user variables
,可以使用TOP 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;
答案 2 :(得分:0)
如果您想随机选择约10%的行:
SELECT *
FROM table
WHERE rand() < 0.1;
它不是100%精确,但它适用于大多数应用程序。