if (NOT EXISTS  (select 1 from  tm_order_goods WHERE order_sn='149507122391385'))
BEGIN
    SELECT '找不到订单149507122391385'
end
ELSE
BEGIN
    SELECT '订单149507122391385已经存在'
END
这个语法通不过
应该怎么改呢

解决方案 »

  1.   

    DELIMITER $$
    CREATE PROCEDURE dd()
    BEGIN
    IF (NOT EXISTS  (SELECT 1 FROM  tm_order_goods WHERE order_sn='149507122391385')) THEN
        SELECT '找不到订单149507122391385';
    ELSE
        SELECT '订单149507122391385已经存在';
    END IF;
    END$$
    DELIMITER ;
      

  2.   

    版本是5.5.21
    一定要放到存储过程里面才行吗
    这只是个简单判断 我不想写个存储过程
    不能像sqlserver那样写吗
      

  3.   

    MYSQL不支持匿名块,必须在SP中才行
      

  4.   

    封装到存储过程中
    create  procedure sp_test()
    begin
    if (NOT EXISTS  (select 1 from  tm_order_goods WHERE order_sn='149507122391385'))
    BEGIN
        SELECT '找不到订单149507122391385'
    end
    ELSE
    BEGIN
        SELECT '订单149507122391385已经存在'
    END
    end
      

  5.   

    这个应该在你的程序中实现。 MYSQL的SQL语句中不能执行这种IF,ELSE的过程语句。这类语句仅允许在MYSQL的存储过程中执行。
    这个可以直接在你的PHP或者VS的程序代码中实现。
      

  6.   

    修改成:
    BEGIN
    if (NOT EXISTS  (select 1 from  tm_order_goods WHERE order_sn='149507122391385'))
        SELECT '找不到订单149507122391385';
    ELSE
        SELECT '订单149507122391385已经存在';
    END;
    推荐:
    淘宝和阿里巴巴去Oracle化事件 引发数据库技术人员大讨论

    MySQL数据库开源软件版本 生产环境GA版本如何选择
      

  7.   

    毕竟是免费的东西.从功能上来说,mysql比SQLServer差太多了。。
      

  8.   

    select * from  tm_order_goods WHERE order_sn='149507122391385' 直接操作一把,在你的程序里如果返回空就是没找到,反之找到,一句话的问题搞那么复杂干什么
      

  9.   

    select 1 from  tm_order_goods WHERE order_sn='149507122391385' 你看看是不是1这里有问题
      

  10.   

    if (NOT EXISTS  (select 1 from  tm_order_goods WHERE order_sn='149507122391385'))
    BEGIN
        SELECT '找不到订单149507122391385'
    end
    ELSE
    BEGIN
        SELECT '订单149507122391385已经存在'
    END是要用存储过程的,直接执行肯定通不过。MySQL毕竟是开源的东西,性能上还是有差距的。