• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 解决没有匹配行的问题

    如果您有使用许多表但不返回任何行的复杂查询,则应使用以下过程找出错误所在:

    1. 使用EXPLAIN来测试查询,以检查是否可以找到明显错误的内容。请参见“ EXPLAIN语句”。
    2. 仅选择该WHERE子句中使用的那些列。
    3. 从查询中一次删除一个表,直到返回一些行。如果表很大,则最好LIMIT 10与查询一起使用。
    4. SELECT为应该与上次从查询中删除的表相匹配的行的列发出。
    5. 如果您正在比较FLOATDOUBLE具有十进制数字的列,则不能使用等式(=)比较。在大多数计算机语言中,此问题很常见,因为并非所有浮点值都可以精确地存储。在某些情况下,将更FLOAT改为DOUBLE可解决此问题。请参见第B.4.4.8节“浮点值问题”。
    6. 如果您仍然无法找出问题所在,请创建一个可以测试此mysql test < query.sql问题的最小测试。您可以通过使用mysqldump --quick db_name tbl_name_1...tbl_name_n> query.sql转储表来创建测试文件。在编辑器中打开文件,删除一些插入行(如果有多余的行来证明问题),然后SELECT在文件末尾添加语句。

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

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

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