【问题标题】:MySQL IF...ELSE or IF EXISTS statementsMySQL IF...ELSE 或 IF EXISTS 语句
【发布时间】:2013-04-10 01:57:31
【问题描述】:

快速提问。我目前正在使用 INSERT...SELECT 语句来检查用户在成为教练之前是否拥有基本会员帐户。此代码工作正常:

INSERT into coaches (U_Name, P_word, M_ID)
SELECT members.U_Name,members.P_word,members.M_ID FROM members
WHERE members.U_Name="bob1" AND members.P_word="123"
ON DUPLICATE KEY UPDATE U_Name = members.U_Name, P_word = members.P_word;


如您所见,如果他们已经存在,我目前只是用相同的数据更新他们的帐户。我现在要做的是,如果用户是会员并且已经成为教练,则显示一条消息,通知他们已经注册为教练。
所以我的问题是,我是将其包装在 IF...ELSE 语句中还是使用 IF EXISTS 语句,例如 insert if not exists else just select in mysql
当时的思路是:

IF EXISTS(SELECT coaches.U_Name,coaches.P_word,coaches.M_ID FROM coaches 
WHERE coaches.U_Name="bob1" AND coaches.P_word="123")
ELSE
BEGIN
INSERT into coaches (U_Name, P_word, M_ID)
SELECT members.U_Name,members.P_word,members.M_ID FROM members
WHERE members.U_Name="bob1" AND  members.P_word="123"
END;

在这里也看过这个例子:MySql IF exists select ELSE insert,但不确定我将如何实现它。任何关于从这里去哪里的说明将不胜感激。

【问题讨论】:

    标签: mysql insert-select


    【解决方案1】:

    INSERT ... ON DUPLICATE KEY UPDATE 语法可以帮助您解决问题。 它从 mySQL 5.0 开始可用

    参考:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

    【讨论】:

    • 所以我这样做:IF EXISTS(SELECT coaches.U_Name,coaches.P_word,coaches.M_ID FROM coaches WHERE coaches.U_Name="bob1" AND coaches.P_word="123") ON DUPLICATE KEY UPDATE U_Name = coaches.U_Name, P_word = coaches.P_word; ELSE BEGIN INSERT into coaches (U_Name, P_word, M_ID) SELECT members.U_Name,members.P_word,members.M_ID FROM members WHERE members.U_Name="bob1" AND members.P_word="123" END; 这是正确的格式吗?
    • 抱歉,我还在习惯编辑系统,^^ 看起来一团糟。
    • 为什么不在查询浏览器上试试看结果呢?
    猜你喜欢
    • 1970-01-01
    • 2021-10-20
    • 2017-10-13
    • 2019-04-09
    • 2014-12-03
    • 2013-05-09
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多