文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

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 转储表来创建一个测试文件。在编辑器中打开该文件,删除一些插入行(如果有多余的行,则足以演示问题),并在文件末尾添加您的 SELECT 语句。

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

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

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