$sql_creat  = "CREATE TEMPORARY TABLE test_table(id BIGINT(100) NOT NULL )TYPE = HEAP;";$sql_insert = "INSERT INTO test_table VALUES(1),VALUES(2),VALUES(3);";$sql        = "DELETE FROM user WHERE user.id = test_table.id;";怎么简化以上的sql ??

解决方案 »

  1.   

    楼主可以换个角度思考
    你在mysql中怎样同时执行多条mysql语句啊? 就是用 delimiter 命令嘛
    PHP中执行SQL代码是一样的啊,就是用“”括起来而已所以
    $sql_delim = "delimiter !";$sql_creat$sql_delim.= "INSERT INTO test_table VALUES(1),VALUES(2),VALUES(3);";$sql_creat$sql_delim.= "DELETE FROM user    WHERE user.id = test_table.id;";$sql_creat$sql_delim.= "!";执行完后再 delimiter ; 还原
      

  2.   

    第二三四行把 $sql_delim 前的变量去掉, 打错了
      

  3.   

    为什么有这样的想法?
    建表 CREATE TEMPORARY TABLE .... 这是一次性工作,执行后就不需要再做了
    删除内容 DELETE FROM user .... 这是非经常性工作  
    插入数据 INSERT INTO test_table ..... 这是经常性工作把他们融合在一起非但是高效率,反而是败招
      

  4.   

    如果只是为了写成一条语句的话,可以试试下面的语句块。$sql=<<<HERE_DOC 
    CREATE TEMPORARY TABLE test_table(id BIGINT(100) NOT NULL )TYPE = HEAP;
    INSERT INTO test_table VALUES(1),VALUES(2),VALUES(3);
    DELETE FROM user    WHERE user.id = test_table.id;
    HERE_DOC;
      

  5.   

    你的意思是这样吗?sql = " delimiter ! INSERT INTO test_table VALUES(1),VALUES(2),VALUES(3);DELETE FROM user WHERE user.id = test_table.id; !" ;
      

  6.   


    如果做一个大批量的删除或更新怎么写?  不是一条条sql循环,想写成一条sql
      

  7.   


    DELETE FROM `menu` WHERE `mid` = 1 LIMIT 1;
    DELETE FROM `menu` WHERE `mid` = 2 LIMIT 1;
    DELETE FROM `menu` WHERE `mid` = 3 LIMIT 1;我看到phpmyadmin里批量删除是这样写的,晕死
      

  8.   

    DELETE FROM `menu` WHERE `mid` in (1,2,3...)