【发布时间】:2013-02-19 10:57:30
【问题描述】:
假设我有一个 MySQL 表,其中包含三列:id、a 和 b,名为 id 的列是一个 AUTO INCREMENT 字段。如果我将如下查询传递给 MySQL,它将正常工作:
REPLACE INTO `table` (`id`, `a`, `b`) VALUES (1, 'A', 'B')
但如果我跳过 id 字段,它将不再有效,这是意料之中的。
我想知道是否有办法ignore REPLACE 查询中的某些字段。所以上面的查询可能是这样的:
REPLACE INTO `table` (`a`, `b`) VALUES ('A', 'B')
我为什么需要这样的东西?
有时我需要使用SELECT 查询检查数据库以查看是否存在行。如果存在,那么我需要UPDATE 现有行,否则我需要INSERT 一个新行。我想知道是否可以通过单个 REPLACE 查询获得类似的结果(但不一样)。
为什么它不能是 same 结果?仅仅因为REPLACE 将DELETE 现有行并将INSERT 一个新行,这将丢失当前primary key 并将增加自动递增 值.相反,在 UPDATE 查询中,primary key 和 AI 字段将保持不变。
MySQLREPLACE.
【问题讨论】:
-
我无法理解你的问题。你到底想做什么?
-
@FathahRehmanP 你熟悉 MySQL
REPLACE吗? -
@Mahdi- 请在 REPLACE 查询之前提供表数据,并在 REPLACE 查询之后提供您的预期输出。我会尽力给你解决方案
-
@FathahRehmanP 我已经更新了我的问题 :)
-
1) 共享正确的表模式。 2)这不是您应该使用替换的方式。 3) 仅当您知道
primary key值时才使用替换。