当前位置: 首页 > 面试题库 >

MySQL的:如果值存在更新否则插入

鲜于璞瑜
2023-03-14
问题内容

我有一些看起来像这样的代码。我必须保留表中的一个自动递增字段(在其他表中使用)。我想简化和优化此代码。

$query ="SELECT * FROM models WHERE col1 = 'foo'";
$testResult = mysql_query($query) or die('Error, query failed');

if(mysql_fetch_array($testResult) == NULL){
    //insert...
    $query ="INSERT INTO models (col1, col2, col3)
    VALUES ('foo', 'bar', 'alph')";
    $result = mysql_query($query) or die('Error, query failed');
}else{
    //update...
    $query = "UPDATE models
        SET col1='foo', col2='bar', col3='alph'
        WHERE col1='foo' AND col2='bar'";
        $result = mysql_query($query) or die('Error, query failed');        
}

编辑:主键ID是自动递增的字段。我永远都不想改变。但是,当另一个字段重复时,这就是我要更新该记录的时间。


问题答案:

如何替换成:

REPLACE INTO models
( col1, col2, col3 )
VALUES
( 'foo', 'bar', 'alpha' )

假设col1是您的主键,如果已经存在一个值为’foo’的行,它将更新其他两列。否则,它将插入新行。



 类似资料:
  • 问题内容: 如果存在,它就可以工作,但是如果不存在,我想将此数据作为新行插入。 更新 datenum是唯一的,但这不是主键 问题答案: Jai是正确的,您应该使用。 请注意,由于它是唯一键,因此不需要在update子句中包含datenum,因此它不应更改。您确实需要包括表中的所有其他列。您可以使用该函数来确保在更新其他列时使用正确的值。 这是使用适用于MySQL 的正确语法重写的更新:

  • 问题内容: 我有一个字段为Foreign_key_id的表| value1 | value2,如果我有对Foreign_key_id和value1的匹配项,我想更新value2。 如果foreign_key_id或value1不存在,我想插入一个新行。有没有比PHP使用select语句然后分支到更新或插入更好的方法呢? 编辑:value2可以与数据库中的值相同,因此我无法运行和更新,请查看受影响的

  • 问题内容: 我有这样的Mysql表 假设该表的示例数据ID 现在,如果组合或对(member_id,doc_id)存在,我想在该表中插入;否则,如果status为0,则更新状态。这是我使用的sql查询 它应该用数据2 1 2 1更新第二行 如果我插入这个 它应该插入一个新行,其数据为4 2 1 0 但我无法解决。而且我认为在innodb引擎中,member_id和doc_id被引用到另一个表的主键

  • 问题内容: 我有一个带有2个表的数据库,如下所示: 列是,并且是 和 在申请表中,我有2个编辑框,名称分别为和 如果用户像电子邮件一样插入一个新的负责人姓名, 那么在保存表格的过程中,我想将新的负责人姓名插入表中,请插入最后一个并将其更新为。 如果用户保持名称,但它更新电子邮件一样,然后我想在从1 =使用新的电子邮件地址和他们(其余和)保持不变。 如果负责人的名称相同,我想保留from表的原始引用

  • 问题内容: 如果给定的文件名已经在数据库中,我想在表中进行更新,否则我想插入新行。我尝试此代码,但显示的错误请给我正确的方式,因为我在SQL中更新鲜 问题答案: 你应该 在查询中使用 参数 - 总是! - 没有例外 创建一个处理 服务器上零件的单个查询 __ 使用公认的ADO.NET最佳实践将事物放入块等。 试试下面的代码:

  • 问题内容: 我想向数据库表中添加一行,但是如果存在具有相同唯一键的行,我想更新该行。 例如: 假设唯一键为,并且在我的 数据库 中有一行。在这种情况下,我想用这些值更新该行。通常,这会产生错误。 如果使用它,将忽略该错误,但仍不会更新。 问题答案: 采用 查询: