【问题标题】:SQL Update Int to Equal Int on another TableSQL 在另一个表上将 Int 更新为 Equal Int
【发布时间】:2014-10-27 13:40:38
【问题描述】:

我希望images.url_id 值与urls.url_id 值相同。

这是我根据this 提出的,但它不起作用。

update images
set images.url_id = urls.url_id
from images inner join urls
on images.url_id = urls.url_id
;

任何帮助将不胜感激。

【问题讨论】:

  • 你能比更详细地说明一下吗?“但它不起作用。” - 这很模糊,你会收到错误消息吗?它是否运行但未达到预期结果?
  • 对不起,是它的 MySQL(谢谢 marc_s),代码没有运行(给出的语法错误),我知道它含糊不清,但我确实说过 “任何帮助都会不胜感激” 而@Consider Me 是完全正确的

标签: mysql sql sql-types


【解决方案1】:

这不起作用,因为您正在尝试使用 urls.url_id 的值更新 images.url_id,条件是这些值相等。你已经知道他们不是。

如果您想将images.url_id 设置为等于urls.url_id 中的值,您需要有一个匹配的列来为每一行执行此类操作。

【讨论】:

  • 此外,UPDATE 语句将更新图像表中的 url_ids,但它只会将它们设置为它们已经存在的值。除了url_id 之外,OP 将需要找到另一个字段来加入
【解决方案2】:

问题在于,您加入的依据是您想要的标准,而不是您拥有的标准。您需要加入两个表之间共有的另一个字段,或者创建一个临时表或 CTE 以获得所需的结果,然后加入该字段。

【讨论】:

    【解决方案3】:

    CASE 表达式用于将一个表达式与 SQL 中的一组表达式进行比较。 CASE 表达式的结果是一个布尔值 truefalse。我们可以使用各种 DML 语句,如 INSERTSELECTDELETEUPDATECASE 语句。

    检查语法:SQL CASE

    【讨论】:

    • CASE 语句将有助于您所做的事情。抱歉,我没有发现您正在寻找代码解决方案并且您不想尝试提高您的 SQL 技能
    • 我理解了链接网页中给出的示例中的 CASE 语句的原因,但它不适用于我,因为所有值都是 NULL 而不仅仅是一些,因此我把它排除在外。我只能为那些对你的评论投反对票的人道歉,我没有(你可以从我的个人资料中看到),但因为它对我怀恨在心是不必要的。
    猜你喜欢
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 2016-09-01
    • 2012-05-24
    相关资源
    最近更新 更多