我想使用 mysqldump 从数据库中检索 X 第一行(其中“第一”按主键排序)。
我正在尝试通过以下方式使用 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语句之后。
我的猜测是你不能结合使用限制 --order-by-primary
解决此问题的一种方法是在-where参数中定义顺序。如果您知道表的主键:
mysqldump -u lelle -p -w"1 = 1 order by <primary key> LIMIT 40" <database> <table>
Run Code Online (Sandbox Code Playgroud)
请注意,这<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 = ...;
Run Code Online (Sandbox Code Playgroud)
然后使用mysqldump中的信息。
| 归档时间: |
|
| 查看次数: |
7118 次 |
| 最近记录: |