我想使用mysqldump从数据库中检索X第一行(其中" first“按主键排序)。
我试图以以下方式使用mysqldump:
mysqldump [connection-info] -where"1=1 LIMIT 40" --order-by-primary database table >> file.sql
(这是在一个为不同表运行不同配置的脚本中)
现在,问题是,该命令创建了以下查询:
SELECT /*!40001 SQL_NO_CACHE */ * FROM表WHERE 1=1 LIMIT 40 ORDER BY primary_key
是一个无效的查询,我需要将LIMIT 40放在ORDER BY语句之后。
发布于 2016-05-13 17:52:10
我猜你不能和--order-by-primary结合使用极限
一种方法是在-where参数中定义顺序。如果您知道表的主键:
mysqldump -u lelle -p -w"1 = 1 order by <primary key> LIMIT 40" <database> <table>注意,<primary key>是主键中列的位置保持器。
如果您事先不知道主键,可以使用INFORMATION_SCHEMA来确定:
select GROUP_CONCAT(column_name SEPARATOR ',')
from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where CONSTRAINT_NAME = 'PRIMARY'
and CONSTRAINT_SCHEMA = ... and table_name = ...;然后使用mysqldump中的信息。
https://dba.stackexchange.com/questions/138499
复制相似问题