代码之家  ›  专栏  ›  技术社区  ›  Neveen

mysql-使用值更新外键

  •  2
  • Neveen  · 技术社区  · 16 年前

    我有一个生日、年、月、日列,其中“年、月、日”列是其他表的外键 我要做的是为每个生日获取ID(年份(生日))作为年份列的值,并为月份和日期列执行相同的操作。

    如何在MySQL中执行此操作?

    我尝试过这个解决方案:

    update member set year=(select All_years.id from All_years,member where All_years.fromY=year(member.birthdate)) where id=30471;
    

    但它会导致“错误1093(hy000):不能为FROM子句中的更新指定目标表'member'”

    提前谢谢

    2 回复  |  直到 15 年前
        1
  •  0
  •   LukáÅ¡ Lalinský    16 年前

    您不想从 members 子查询中的表。请改用正在更新的表。

    UPDATE member
    SET year=(
       SELECT id FROM all_years
       WHERE fromY=year(member.birthdate)
    )
    WHERE id=30471;
    

    但是,是否有原因说明年份/月份/日期是外键?

        2
  •  -1
  •   junmats    16 年前
    SELECT birthdate FROM member INTO @myBirthdate;
    
    update member set year=(select All_years.id from All_years,member where All_years.fromY=year(@myBirthdate)) where id=30471;
    

    月和日也是如此。