sqlite中条件的数字列表

时间:2018-05-08 19:27:22

标签: python-3.x sqlite

我有一张表,我正在尝试创建一个根据条件有效而增加的列。

在我的示例中,我需要更新部门=营销部门。任何人都有使用SQLite的好方法吗?

当前表

Name        Department     Department_Count
James       Accounting     NULL
Jennifer    Marketing      NULL
Micheal     Warehouse      NULL
Natalie     Marketing      NULL
Rebecca     Marketing      NULL

更新表

Name        Department     Department_Count
James       Accounting     NULL
Jennifer    Marketing      1
Micheal     Warehouse      NULL
Natalie     Marketing      2
Rebecca     Marketing      3

编辑:

目前,我将部门“营销”的行插入到新表中,然后使用主键或rowid创建自动增量,以便对这些类型的项进行编号。

这要求我创建一个不是最好的新表,因为它占用了这么多空间而且表是多余的,因为我已经在这个原始表中有了基础数据。

我正在使用python与我的数据库交互,如果这有助于解决这个问题。

1 个答案:

答案 0 :(得分:0)

<强>更新

实际上,考虑一下,你可能不需要触发器:

 INSERT INTO Table (Department, Department_Count) 
    VALUES (?, (SELECT MAX(IFNULL(Department_Count, 0)+1 FROM Table WHERE Department = ?))

可能会给你你想要的东西。

原始答案

你无法以声明的方式做到这一点,但你可以使用trigger以程序方式完成你想要的任务。

两种可能的策略:

  1. 使用AFTER INSERT触发器对最近插入的行执行UPDATE语句(RowID将在INSERT后可用),以根据表中的当前数据将Departement_Count列设置为SELECT表达式。

  2. 使用INSTEAD OF触发器执行备用INSERT,将NEW游标中的值与类似的SELECT语句组合,以从Department_Count列中获取最大值(加1)。