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

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

  1. 测试查询解释检查你是否能找到明显错误的东西。看第 13.8.2 节,“解释声明”.

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

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

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

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

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

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

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

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