文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  解决没有匹配行的问题

B.3.4.7 解决没有匹配行的问题

如果您的查询很复杂,使用了多个表,但没有返回任何行,您应该使用以下步骤来找出问题所在。

  1. 使用 EXPLAIN 测试查询,以检查是否可以找到明显错误的地方。参见 第 15.8.2 节,“EXPLAIN 语句”

  2. 只选择 WHERE 子句中用到的列。

  3. 一次从查询中删除一个表,直到查询返回一些行。如果表很大,最好在查询中使用 LIMIT 10

  4. 针对从查询中最后删除的表,对应该与行匹配的列发出 SELECT 查询。

  5. 如果要将 FLOATDOUBLE 列与带小数的数字进行比较,则不能使用等号 (=) 比较。这个问题在大多数计算机语言中都很常见,因为并非所有浮点数都能以完全精确的方式存储。在某些情况下,将 FLOAT 更改为 DOUBLE 可以解决这个问题。参见 第 B.3.4.8 节,“浮点数问题”

  6. 如果仍然无法找出问题所在,请创建一个可以使用 mysql test < query.sql 运行的最小测试,以显示您的问题。您可以通过使用 mysqldump --quick db_name tbl_name_1 ... tbl_name_n > query.sql 导出表来创建测试文件。在编辑器中打开文件,删除一些 insert 行(如果数量超过演示问题所需的數量),并在文件末尾添加 SELECT 语句。

    通过执行以下命令验证测试文件是否能演示问题。

    $> mysqladmin create test2
    $> mysql test2 < query.sql

    将测试文件附加到错误报告中,您可以按照 第 1.6 节,“如何报告错误或问题” 中的说明提交错误报告。