首页 > 在没有索引值跟unique 下的if esle 应用错误

在没有索引值跟unique 下的if esle 应用错误

IF (SELECT count(user_id) FROM user_group where group_id != 1 and user_id=505) = 0
INSERT INTO user_group (user_id,group_id) VALUES ('505','1766' );
else
update user_group SET user_id='505',group_id='1766' WHERE group_id !=1;
end IF
以上我拆开来试都可以执行,合在一起就不行

p.s. table 没有索引值,也没有uniqu 所以不能用replace 或 on DUPLICATE key update

怎么查都觉得上面是对的 = =


更新:如果不写存储过程,是不能用到存储过程中的流程控制语句IF..THEN..END IF,而只能用到流程控制函数if()。

这样的逻辑要么在后端查一次写一次,要么在存储过程/函数里面查一次写一次。
为何不加索引呢。这样的逻辑都避免不了查一次表写一次表,查表的时候还只能扫全表。


因为……少了THEN……

mysqlDELIMITER $$

CREATE PROCEDURE `new_procedure` ()
BEGIN

IF  EXISTS(
        SELECT 1
        FROM    user_group
        WHERE   group_id != 1 AND 
                user_id = '505' )
THEN
    INSERT
    INTO    user_group
            (`user_id`,`group_id`)
    VALUES  ('505','1766' );
ELSE
    UPDATE  user_group
    SET     user_id  = '505',
            group_id = '1766'
    WHERE   group_id !=1;

END $$
【热门文章】
【热门文章】