【问题标题】:SQL how to auto increment a value depending on another valueSQL如何根据另一个值自动增加一个值
【发布时间】:2021-02-18 17:48:45
【问题描述】:

我正在创建一个使用 SQL 数据库的程序,但我对如何解决以下问题有疑问。

我有一个名为 Warehouse 的表,其中有 WarehouseID 和 WarehouseName。

然后,我创建了另一个名为 Aisle 的表,其中包含 WarehouseID(应与之前的字段相同)以及 AisleID 和 AisleName。

所以 WarehouseID 和 AisleID 可以是 1、2、3... 但是我想要的是,当我选择 WarehouseID = 1 来创建新的 AisleID 时,数据库应该能够注意到哪个是 AisleID 的最后一个数字WarehouseID = 1 并添加自动增量。

因此,可以是多个具有相同值的 AisleID,但只能是具有一个唯一值的 WarehouseID。

如何在 SQL 中做到这一点?

感谢和亲切的问候

【问题讨论】:

    标签: sql database sqlite integer


    【解决方案1】:

    这个查询:

    SELECT COALESCE(MAX(AisleID), 0) + 1
    FROM Aisle
    WHERE WarehouseID = 1
    

    返回要插入到表 Aisle 中的新 AisleID
    但是你想要AisleName 的价值是多少?
    如果AisleNameAisle 中的所有行都相同且具有相同的WarehouseID,则可以使用MAX(AisleName),或者如果不是,则必须提供该值。

    所以你可以这样做:

    INSERT INTO Aisle(AisleID, AisleName, WarehouseID)
    SELECT COALESCE(MAX(AisleID), 0) + 1, MAX(AisleName), ?
    FROM Aisle
    WHERE WarehouseID = ?
    

    ? 替换为您希望该行具有的WarehouseID 值。
    如果您希望 MAX(AisleName) 与之前的行不同,或者如果它是具有 WarehouseID 的第一行,也将 MAX(AisleName) 替换为新值 AisleName

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 2019-10-04
      • 2010-12-01
      • 2017-06-06
      相关资源
      最近更新 更多