【问题标题】:Insert in an existing row在现有行中插入
【发布时间】:2014-01-18 14:55:11
【问题描述】:

如何在字段中插入而不创建新行

如果我明白了:

我不能将insertwhere 子句一起使用:

INSERT INTO consulta (tema)  
value('prova')  
WHERE client=1;

我可以updatewhere,但如果该字段为空,我不能这样做:

UPDATE consulta      
SET tema=prova  
WHERE client=1;

那么我应该如何在现有行中插入呢?

【问题讨论】:

  • 先插入你的值,当你的值存在时,做UPDATE查询?
  • 更新咨询 SET tema=prova WHERE client=''

标签: sql insert sql-update


【解决方案1】:

你想要其中之一吗?

UPDATE consulta
SET tema=prova
WHERE client is null;

UPDATE consulta
SET tema=prova
WHERE client = '';

“空”在 SQL 中没有技术含义,因此也可以。

【讨论】:

    【解决方案2】:

    我认为问题可能是您在尝试设置的值周围缺少引号。

    试试:

    UPDATE consulta       
    SET tema='prova'  
    WHERE client=1;
    

    【讨论】:

    • 您必须使用“prova”,而不是“prova”。小心那些小错误。
    【解决方案3】:

    我认为您实际上是在尝试更新,插入总是用于创建,除非您使用 replace into ,只有当表中的旧行与新行具有相同的值时,才会覆盖您的行对于 PRIMARY KEY 或 UNIQUE 索引,(来自 Mysql 5 reference 但我不知道您使用的是哪个 DBMS

    从你的更新声明中我看到 prova 没有'',也许这是你的问题。

    您应该使用: UPDATE consulta SET tema='prova' WHERE client=1;

    【讨论】:

    • 你是对的。我的问题是prova这个词应该有“。更新一个字段没有问题,即使它是空的。
    【解决方案4】:

    如果该行已经存在,则需要使用更新语句 您可以在 where 类中将值检查为空。使用下面的查询

    update consultaSET tema='prova' WHERE tema='' and client=1
    

    【讨论】:

      猜你喜欢
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多