Sql 如果列值id与另一个表中的id描述匹配,则在指定列中插入数据(规范化形式)

Sql 如果列值id与另一个表中的id描述匹配,则在指定列中插入数据(规范化形式),sql,postgresql,postgresql-9.3,postgresql-9.4,Sql,Postgresql,Postgresql 9.3,Postgresql 9.4,为了做到这一点(在标题描述中),很明显,它已经是一个规范化的数据库,因此肯定会使用内部连接类型的检查 假设我们有一个customer表和一个给定的customer\u ID作为主键,还有description first name last name等,在另一个表(customer\u Sales\u History)customer\u ID列上也有,以便在查询时进行搜索 更新: 我的难题是,我需要在特定列中添加以XML(Soap响应)格式获取的特定数据,但通过Customer_Name&Cu

为了做到这一点(在标题描述中),很明显,它已经是一个规范化的数据库,因此肯定会使用内部连接类型的检查

假设我们有一个customer表和一个给定的customer\u ID作为主键,还有description first name last name等,在另一个表(customer\u Sales\u History)customer\u ID列上也有,以便在查询时进行搜索

更新: 我的难题是,我需要在特定列中添加以XML(Soap响应)格式获取的特定数据,但通过Customer_Name&Customer_Lastname检查附加到特定的Customer_ID

如果Customer_Name=“John”和Customer_Lastname=“Martin”,则使用值填充salescode productquantity和productdescription

该卷很大(数千行),因此sql可能必须作为另一个表的插入来填充,对于这种类型的卷,我是非常陌生的

           Customer Table
Customer_ID | Customer_Name | Customer_Lastname 
1           |  John         | Martin
2           |  Jack         | White
3           |  Don          | Carrera

     Customer_Sales_History Table

Customer_ID | Sales_Code | ProductQuantity | ProductDescription
2           |     X      |        X        |         X

为了将给定数据插入到Customer\u Sales\u History表中,Customer\u ID 2作为给定目标,我必须匹配Customer\u Name=Jack和Customer\u Lastname=White的行,并填充销售代码Product\u Quantity&Product Description。

如果您已在Customer表中将Customer\u ID声明为主键并在中声明Customer\u ID客户\销售\历史记录表作为外键,然后它将自动执行检查部分。
所以为什么需要显式检查客户id?

因为我提供的数据不知道DB格式,他们只是给你客户的描述,例如,为了插入新数据,我必须在行中匹配Jack White。不要在的
from
子句中指定目标表UPDATE语句,除非您希望该表与自身交叉连接。您的意思是什么?你能把它写下来吗?它已经写在手册中了:(请参阅关于
from_list
的部分)“它必须在from_list中以别名出现”。所以没关系。不是吗?不是,不是-“请注意,目标表不得出现在from_列表中,除非您打算进行自联接”-update语句将创建一个完全不必要的自联接,并将导致更多的行被更新,而不是预期的自联接-这完全是错误的(另外:adtoctor希望插入数据,而不是更新),那么应该如何进行呢“XML格式“看起来怎么样?你需要什么信息?您真的需要插入数据还是要更新历史记录表中的现有行?sales_code、productquantity和productdescription的值来自哪里?你的客户表似乎没有这样的功能。它是一个soap响应,所以它就像Jack White 2000 2 SQL如何为傻瓜创建一样。还有一点是,像这样的响应类似于45000个其他响应。。所以我想做的是创建一个SQL语句,这样我就不必手动执行了。。。除此之外,我还可以用Navicat。1行不需要SQL代码。抱歉,我不明白。为什么您不能使用一个简单的
插入到客户销售历史(…)值(…)
?我可以预先创建表,这样创建在SQL语句中就不是问题了。如果我只是简单地添加它们,我会与已列出的客户创建重复项,而我真正想要的是将销售附加到已存储的客户。如果它们已经存在。
Update ch
set ch.sales_code = ...,
    ch. ProductQuantity =...,
from  Customer_Sales_History ch join Customer c on ch. Customer_ID= c.Customer_ID
where ch.Customer_ID=2