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

[](<>)[](<>)

如果您有一个使用许多表但不返回任何行的复杂查询，您应该使用以下过程来找出问题所在：

1.  测试查询[`解释`](explain.html)检查你是否能找到明显错误的东西。看[第 13.8.2 节，“解释声明”](explain.html).

2.  仅选择在`在哪里`条款。

3.  从查询中一次删除一个表，直到它返回一些行。如果表很大，最好使用`限制 10`与查询。

4.  发出一个[`选择`](select.html)对于应该与最后从查询中删除的表匹配的行的列。

5.  如果你在比较[`漂浮`](floating-point-types.html)要么[`双倍的`](floating-point-types.html)具有小数的数字的列，您不能使用相等（`=`) 比较。这个问题在大多数计算机语言中很常见，因为并非所有浮点值都可以精确存储。在某些情况下，更改[`漂浮`](floating-point-types.html)到一个[`双倍的`](floating-point-types.html)解决这个问题。看[第 B.3.4.8 节，“浮点值问题”](problems-with-float.html).

6.  如果您仍然无法找出问题所在，请创建一个可以运行的最小测试`mysql测试<查询.sql`这表明你的问题。您可以通过转储表来创建一个测试文件[**mysqldump --快速数据库\_姓名*`tbl_name_1`*...*`tbl_name_n`* >查询.sql**](mysqldump.html).在编辑器中打开文件，删除一些插入行（如果有超过演示问题所需的行），然后添加您的[`选择`](select.html)文件末尾的声明。

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

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

    将测试文件附加到错误报告中，您可以使用中的说明进行归档[第 1.6 节，“如何报告错误或问题”](bug-reports.html).
