【问题标题】:How to copy contents of a column in a database如何复制数据库中列的内容
【发布时间】:2021-02-03 15:46:25
【问题描述】:

我正在尝试了解更新查询在 SQL 中的工作原理。基本上我有一个叫做 cmets 的表。该表有一个“ID”、“Comment_Name”、“Creation_Date”和“Created_By”。

我想要做的是将“用户 A”创建的所有 cmets 更新为同一表中的“用户 B”拥有。

我该怎么做?

对不起,我的问题是表格及其内容的图像

Please Click here for the data contents for user A of the table

Please Click here for the data contents for user B of the table

所以澄清一下,我想将 A 拥有的所有内容更新为 B 拥有,这里的 A 可能是 owner_id lafunwtw,这里的 B 可能是 user_id kvce8il7

请注意,我只有一张桌子,拥有不同的主人。主表称为posts

【问题讨论】:

  • '由用户 A 创建,归用户 B 所有' - ??所有权列在哪里?
  • 请张贴表格定义。
  • 您对此的具体问题是什么?您是否也可以将您的问题限制在一个数据库系统上,或者这是否意味着通用?
  • 您的标题当前与您的问题不匹配:更新查询不会“复制”任何内容;顾名思义,它更新事物,即改变它们的值
  • 贴一个非常简单的例子。用这种方式更容易看出你在做什么。

标签: mysql sql postgresql


【解决方案1】:

这似乎是一个基本的update

update comments
   set created_by = 'B'
   where created_by = 'A';

也就是说,我不确定这是个好主意。覆盖所有者 - 并忘记原始所有者 - 似乎对下游应用程序可能是危险的。例如,如果有人总结了“B”创建的 cmets 的数量,那么这些数字会突然改变。

【讨论】:

  • 嗨@Gordon 这不起作用我尝试了实现SQL给了我一个错误错误:关系帖子的权限被拒绝
  • @PratikPatel。 . .你的问题只提到了一张表,comments,所以这个错误没有意义。
【解决方案2】:

你可以这样做:

UPDATE Comments SET Created_By = 'B' WHERE Created_By = 'A'

如您所见,更新命令会将所有带有“Created_By = A”的行替换为 B。

【讨论】:

  • A 和 B 应该被引用,,,
  • 谢谢,答案很快,我的错。
猜你喜欢
  • 2020-09-21
  • 2014-05-15
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多