【发布时间】:2021-01-31 18:23:33
【问题描述】:
我正在尝试更新同一个表中用户名字和姓氏的电子邮件地址值。
生成邮件的模式:<Firstname>.<Lastname>@test.org
示例表“人员”:
Firstname Lastname email
Henley Figueroa none@none.com
Samina Morrison none@none.com
Dev Rowe none@none.com
表“Persons”的希望结果:
Firstname Lastname email
Henley Figueroa Henley.Figueroa@test.org
Samina Morrison Samina.Morrison@test.org
Dev Rowe Dev.Rowe@test.org
SQL 代码
UPDATE Persons
SET
email = (SELECT FirstName || "." || LastName ||"@"||"test.org" FROM Persons)
“Persons”表的实际结果:
Firstname Lastname email
Henley Figueroa Henley.Figueroa@test.org
Samina Morrison Henley.Figueroa@test.org
Dev Rowe Henley.Figueroa@test.org
只重复使用返回结果表的第一条记录。为什么?
如果我省略了 SELECT:
UPDATE Persons
SET
email = FirstName || "." || LastName ||"@"||"test.org"
我得到了预期的结果。
参考你的答案,我用两个表格的例子来扩展我的问题。一个只有名字,第二个是邮件地址。
桌人:
| ID* | Firstname | Lastname |
|---|---|---|
| 1 | Henley | Figueroa |
| 2 | Samina | Morrison |
| 3 | Dev | Rowe |
表地址:
| ID* | |
|---|---|
| 1 | wrong@wrong.ng |
| 2 | wrong@wrong,ng |
| 3 | wrong@wro.ng |
UPDATE Addresses
SET email = (SELECT Firstname ||"."|| Lastname || "@test.org"
FROM Persons WHERE Persons.id = Addresses.id)
这里使用 SET 和 SELECT 进行更新(每个人都有一个唯一的邮件地址)。我不应该在这里遇到同样的问题吗? 从 SELECT 的输出中,我看到我再次(如预期)获得了三条记录。
【问题讨论】:
标签: sql sqlite subquery correlated-subquery