【发布时间】:2021-12-30 21:05:30
【问题描述】:
我有一个如下所示的MySQL 表,其中pKey 是primary_AI 密钥。
+------+-----------+----------+----------+
| pKey | firstName | LastName | Username |
+------+-----------+----------+----------+
| 1 | John | Brown | jBrown |
| 2 | Jake | Smith | jSmith |
| 3 | Mary | Laurier | mLaurier |
+------+-----------+----------+----------+
我想创建一个查询,当给定firstName 时,它可以替换LastName 属性。比如firstName的John,比如我想改姓为Wilson。
我编写此查询是为了在提供名字时替换(或者如果不存在则自动创建行)姓氏。
REPLACE into `myTableName` (LastName, Username) VALUES ("Wilson", "jWilson") WHERE firstName = "John";
我希望此查询将John Brown 的记录更改为John Wilson,并将jBrown 的用户名更改为jWilson。如果名字为John 的行不存在,我还希望它创建一个新行,其值为John 作为firstName 和Wilson 作为LastName 以及将用户名更改为jWilson。
我知道我可以通过多个查询来做到这一点,例如SELECT 名字,INSERT 如果它不存在,或者DELETE 记录和INSERT 如果它存在,则再次查询,但我我需要一次插入许多记录,并希望在单个查询中执行此操作。
我该如何解决这个问题?
【问题讨论】:
-
是否为列
firstName定义了唯一约束? -
firstName在本例中是唯一的 -
在您发布的示例数据中是唯一的,但在表中是否定义为唯一?
-
它在表中没有定义为唯一,但我知道它永远是唯一的
-
您是在导入数据还是更新特定行?