【问题标题】:IF statement issues: MySQLIF 语句问题:MySQL
【发布时间】:2012-05-23 08:53:06
【问题描述】:

我有一张桌子叫contact

我在表中有一个标记为name 的字段和一个标记为email 的字段。

我在名称字段中有一个值为 Ryan 的行和一个空白电子邮件字段。

我想运行一个 if 语句,如果name 匹配Ryan,它将把电子邮件info@ryanmurphy.org.uk 插入email field

如果找不到匹配项,那么我希望它插入行。

到目前为止,我已经尝试过:

 IF name = 'Ryan'
 THEN INSERT INTO contact (email) VALUES ('info@ryanmurphy.org.uk') 
 ELSE
 INSERT INTO contact (name, email) VALUES ('Ryan', 'info@ryanmurphy.org.uk')
 END IF;

【问题讨论】:

    标签: mysql if-statement insert


    【解决方案1】:

    我可能真的错了,但下面的代码不起作用吗?

    UPDATE contact SET email='info@ryanmurphy.org.uk' WHERE name='Ryan';
    

    【讨论】:

    • 我需要先检查联系人是否存在。更新的问题。
    • 您说:“我在名称字段中有一个值为 Ryan 的行和一个空白的电子邮件字段。”所以就像@Cyrille 说的,更新应该有效。 Insert 语句将插入一个没有名称的新行,这是你想要的吗?
    • 如果您现在阅读问题,我需要执行 ifelse 语句,因为如果没有 name=ryan,则需要执行 else 语句
    【解决方案2】:

    如果名称列是主键,则可以使用替换命令

    REPLACE INTO contact (name, email) VALUES ('Ryan', 'info@ryanmurphy.org.uk')
    

    在我看来,您的表中应该有键或唯一字段。例如,如果 name 是唯一字段,您可以使用类似这样的内容

    INSERT INTO contact (name, email) VALUES ('Ryan', 'info@ryanmurphy.org.uk') ON DUPLICATE KEY UPDATE email = "info@ryanmurphy.org.uk"
    

    你能改变你的表架构吗?

    【讨论】:

    • 很遗憾名称列不是主键
    • 所以如果名称为 ryan 的行在表中,您想更新 ryan 的电子邮件吗?如果没有,你只想插入整行?
    【解决方案3】:

    解决方案是将问题中的查询放入存储过程中

    【讨论】:

      猜你喜欢
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 2021-05-15
      • 2012-11-19
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多