【问题标题】:SQL Statement issue , UPDATING the wrong informationSQL 语句问题,更新错误信息
【发布时间】:2014-08-31 20:38:21
【问题描述】:

如果有人在其他地方问过这个问题,我提前道歉。我已经广泛寻找解决方案,但找不到。

我有一个我正在尝试更新的数据库。我正在使用 Microsoft Access 来执行此操作。

我有 1 个名为 products 的表,它有 4 列,如下所示:categoryID、categoryName、productID 和 newName。

我想要的是通过从“categoryID”和“productID”相等的“categoryName”中获取名称来生成新名称。问题是我的查询使用错误信息更新了“newName”列.

我的 SQL 查询如下:

UPDATE products 
SET newName = categoryName 
WHERE productID LIKE categoryID 

_ 这些是我的表格示例:

这是我运行查询之前表格的样子:

TABLE NAME : products.
categoryID     categoryName     productID     newName
1              Kids             7             
2              Baby             5                       
3              Themes           4                      
4              General          4             
5              Neon Glow        5             
6              Costumes         4                 
7              1st Birthday     7             

这是我运行查询时发生的情况:

TABLE NAME : products.
categoryID     categoryName     productID     newName
1              Kids             7             Kids
2              Baby             5             Baby            
3              Themes           4             Themes          
4              General          4             General 
5              Neon Glow        5             Neon Glow
6              Costumes         4             Costumes        
7              1st Birthday     7             1st Birthday

这是我想要的输出:

TABLE NAME : products.
categoryID     categoryName     productID     newName
1              Kids             7             1st Birthday
2              Baby             5             Neon Glow           
3              Themes           4             General          
4              General          4             General
5              Neon Glow        5             Neon Glow
6              Costumes         3             Themes       
7              1st Birthday     7             1st Birthday

我的查询当前正在检查两个 ID 列是否相等,然后复制类别名称。 如果“productID”与“categoryID”相同,我希望“newName”字段填充与“categoryID”在同一行的“categoryName”。

请帮助我找出我的 SQL 语句中的错误。

提前致谢

【问题讨论】:

  • 请适当地标记问题。它说 MS Access,但标签是 MySQL。我删除了那个标签并添加了 ms-access,但显然它由于某种原因被改回来了。

标签: sql ms-access join sql-update inner-join


【解决方案1】:

试试这个:

UPDATE p 
SET p.newName = p1.categoryName 
FROM products p 
INNER JOIN products p1 ON p.productID = p1.categoryID 

【讨论】:

  • 您好,当我尝试此操作时出现错误。错误如下:“查询表达式'p1.categoryName FROM products p INNER JOIN products p1 ON p 中的语法错误(缺少运算符)。 productID = p1.categoryID'.".
【解决方案2】:

这是你想要的吗?

UPDATE products 
    SET newName = (select categoryName
                   from products as p2
                   where p2.productId = products.categoryID
                  );

【讨论】:

  • 当我尝试这个时,我得到一个错误。错误如下:“操作必须使用可更新的查询。”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
相关资源
最近更新 更多