gpt4 book ai didi

sql - 比较“姓氏”和“F”。 SQL中的“姓氏”

转载 作者:行者123 更新时间:2023-12-03 17:54:18 29 4
gpt4 key购买 nike

我有两个表,Table1Table2

Table1由格式为FullName的名称列('FirstName LastName')和唯一标识符(Key)组成。 Table2的列(Name)由这些名称组成,但格式为'F. LastName'

我想用Table2中的唯一标识符(Key)替换Table1中的名称。这需要比较FullNameName中的字符串(此比较是双射的)。

使用SQL可以做到吗?

最佳答案

您可以直接进行更新,但是您有代码无法解决的问题。

create table table1 (
key integer primary key,
firstname varchar(20),
lastname varchar(20)
);
insert into "table1" values(1,'Ian','McCormick');
insert into "table1" values(2,'Irving','McCormick');

create table table2 (name varchar(30));
insert into table2 values('I. McCormick');


看到问题了吗? “ Ian McCormick”和“ Irving McCormick”都映射为“ I”。麦考密克。哪个ID号应为“ I.麦考密克的结局是什么?没有办法说。

无论如何,请仔细更新。备份您的数据库。然后为ID号添加一个新列。

alter table Table2
add column key integer;


现在,您可以更新新列,而不会冒旧列中数据的风险。

update table2
set key = (select key
from table1
where name = substr(FirstName, 1, 1) || '. ' || LastName);




您也可以加入表达式。加入要在更新中使用的表达式是一个很好的第一步-它可以在为时已晚之前提醒您注意问题。另外,如下所示,它可以向您显示错误数据可能造成的损失。

sqlite> select * from table1
...> inner join table2
...> on substr(FirstName, 1, 1) || '. ' || LastName = table2.name;

key firstname lastname name key
--
1 Ian McCormick I. McCormick 1
2 Irving McCormick I. McCormick 1


请注意第二行上的键不匹配。

关于sql - 比较“姓氏”和“F”。 SQL中的“姓氏”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18647089/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com