mysql 4.05以下版本不能支持子查询,但所有的子查询都可以使用LEFT JOIN 或 AND 语句替代。

解决方案 »

  1.   

    是的,mysql4.0版本以前不支持子查询!不过mysql中你的这个语句:
     ... WHERE NOT task_id IN (...) 好像应该是 ... WHERE task_id NOT IN (...)
      

  2.   

    MySQL 数据库服务器 返回错误信息:You have an error in your SQL syntax near 'EXISTS(SELECT * FROM debug_tasks AS b 
    WHERE task_id = 1) THEN task_id + 1 ELSE 1' at line 1
      

  3.   

    mysql4.0版本以下是不支持子查询的!用以下SQL语句代替试试:select t1.task_id+1 from debug_tasks t1 left join debug_tasks t2 on t1.task_id=t2.task_id-1 where t2.task_id is null order by t1.task_id limit 1;
    不过我自己测试了,当整个表数据量比较大时(>50000条),速度比较慢
      

  4.   

    sorry,多写了一个0,大概在>5000条记录时,就需要10秒钟以上
      

  5.   

    其始有很简单的SQL语句:
    select min(task_id) from debug_tasks
      

  6.   

    经过测试,好像可以优化select @maxid:=max(task_id) from debug_tasks;select t1.task_id+1 from debug_tasks t1 left join debug_tasks t2 on t2.task_id<=@maxid and t1.task_id=t2.task_id-1 where t2.task_id is null order by t1.task_id limit 1;