gpt4 book ai didi

sql - 查询以将相同的 ID 分配给插入的行,如果它已存在于表中

转载 作者:行者123 更新时间:2023-12-04 14:19:05 27 4
gpt4 key购买 nike

我将客户记录插入到表中,如果已存在同名记录,我会为新插入的记录分配相同的 ID。

假设表 T 有以下记录:

ID | Name | Phone_Number | Date_Inserted
105| Sam | 111111 | 04/03/2014
106| Rita | 222222 |04/03/2014

我从表 A 插入这个:
Name| Phone_Number
Sam | 333333

然后插入后,表 T 应该有:
ID | Name | Phone_Number | Date_Inserted
105| Sam | 111111 | 04/03/2014
106| Rita | 222222 | 04/03/2014
105| Sam | 333333 | 04/04/2014

如果没有上述更改,它将看起来像:
INSERT INTO T SELECT CustID.nextval,Name,Phone_Number,SYSDATE FROM A;

本来想用的
INSERT INTO T
SELECT CASE
WHEN NOT EXISTS(select null from T WHERE T.Name=A.Name) THEN CustID.nextVal
ELSE (select ID from T where T.Name=A.Name)
END,
Name,
Phone_Number,
SYSDATE
FROM A;

但我不确定它是否会起作用,而且它似乎对性能来说是多余的/不利的。如果有更好的方法来做到这一点,请告诉我。

最佳答案

如果您的架构不是一成不变的,我可能会重新配置它,以便有一个“人员”表和一个单独的“人员电话号码”表。通过这种设置,您可以将多个电话号码与一个人相关联,并且您不会踩踏 ID,或创建不是主键的令人困惑的辅助 ID 列。

关于sql - 查询以将相同的 ID 分配给插入的行,如果它已存在于表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25065372/

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