gpt4 book ai didi

SQL INNER JOIN 更新不重复行

转载 作者:行者123 更新时间:2023-12-03 02:58:12 26 4
gpt4 key购买 nike

我有一个包含内部联接的更新查询。由于连接,我希望此查询返回两列,但似乎 QUERY 仅采用第一行并使用它来更新数据,而忽略其余部分。

这是我的更新命令

UPDATE [mamd]
SET [Brand_EL] = IIF(CHARINDEX('ELECT', UPPER([mml].[Brand_Desc])) > 0, 'YES', [Brand_EL])
FROM [mamd] [m]
INNER JOIN [ior] [ir] ON [ir].[CLIENT_CUSTOMER_ID] = [m].[CustomerId] COLLATE Latin1_General_CI_AS
INNER JOIN [maslist] [mml] ON [mml].[Model] = [ir].[MODEL] COLLATE Latin1_General_CI_AS

如果我做这样的选择

SELECT [ir].[CLIENT_CUSTOMER_ID], IIF(CHARINDEX('ELECT', UPPER([mml].[Brand_Desc])) > 0, 'YES', [Brand_EL])
FROM [mamd] [m]
INNER JOIN [ior] [ir] ON [ir].[CLIENT_CUSTOMER_ID] = [m].[CustomerId] COLLATE Latin1_General_CI_AS
INNER JOIN [maslist] [mml] ON [mml].[Model] = [ir].[MODEL] COLLATE Latin1_General_CI_AS

我得到以下返回的数据

CLIENT_CUSTOMER_ID | Brand_EL
-------------------+----------
980872 | NO
980872 | YES

我认为它只需要一条记录的原因是因为

  1. 该值永远不会更改为“YES”
  2. 当我运行更新命令时,它说只更新了 1 行,即使它应该经过两行

可能导致该问题的一件事是 [mamd] 不包含同一用户的多个记录;这是一个独特的领域。由于它是一个唯一的字段,因此只有一行,这是否意味着它只会运行该连接一次?如果是这种情况,是否有更好的方法可以在不使用嵌套选择来生成结果的情况下执行此操作?

更新

大家好,

作为更新,我采纳了戈登的建议并使用了聚合。在我的这个例子中,我只关心该值是否为“YES”,因为我只需要知道客户是否购买了特定产品。所以我最终做的是按客户 ID 分组并使用 MAX 函数。如果客户购买了产品,“YES”会冒泡到顶部。如果他没有购买,它将保持为 NO 或 NULL。在这种情况下,这并不重要。

最佳答案

该行为是正确的并记录在案,尽管方式不是很清楚:

Use caution when specifying the FROM clause to provide the criteria for the update operation. The results of an UPDATE statement are undefined if the statement includes a FROM clause that is not specified in such a way that only one value is available for each column occurrence that is updated, that is if the UPDATE statement is not deterministic. For example, in the UPDATE statement in the following script, both rows in Table1 meet the qualifications of the FROM clause in the UPDATE statement; but it is undefined which row from Table1 is used to update the row in Table2.

这试图说明的是,更新仅更新一行一次。使用哪个值是不确定的。因此,如果您需要决定如何处理多个匹配项。

关于SQL INNER JOIN 更新不重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30294215/

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