在 MySQL 中有条件地在列中插入值
Insert value in a column conditionally in MySQL
我有一个 table 人,列为 PersonId
、FirstName
、DeptId
和 City
。 PersonId
是主键。
默认情况下,第一次插入时,我希望 DeptId
的第一个条目的值为 3000
。并且后续条目应始终在 DeptId
.
的最后一个值上递增
有人可以在 MySQL 中帮助我吗?
1 John 3000 Port Mathurin
2 James 3001 Port Desny
insert into `Persons` (`PersonID`, `FirstName`, `DeptId`, `City`) VALUES (1, 'Job', select `DeptId` from `Persons` +1, 'Port Mathurin)
而不是 INSERT ... VALUES
使用 INSERT ... SELECT
到 select 来自 Persons
的最大值 DeptId
:
INSERT INTO Persons (PersonID, FirstName, DeptId, City)
SELECT 1, 'Job', COALESCE(MAX(DeptId), 2999) + 1, 'Port Mathurin'
FROM Persons;
当 table 为空时,COALESCE()
将 return 2999
,对于 +1
,结果将是 3000
table.
第一行的 13=]
我有一个 table 人,列为 PersonId
、FirstName
、DeptId
和 City
。 PersonId
是主键。
默认情况下,第一次插入时,我希望 DeptId
的第一个条目的值为 3000
。并且后续条目应始终在 DeptId
.
有人可以在 MySQL 中帮助我吗?
1 John 3000 Port Mathurin
2 James 3001 Port Desny
insert into `Persons` (`PersonID`, `FirstName`, `DeptId`, `City`) VALUES (1, 'Job', select `DeptId` from `Persons` +1, 'Port Mathurin)
而不是 INSERT ... VALUES
使用 INSERT ... SELECT
到 select 来自 Persons
的最大值 DeptId
:
INSERT INTO Persons (PersonID, FirstName, DeptId, City)
SELECT 1, 'Job', COALESCE(MAX(DeptId), 2999) + 1, 'Port Mathurin'
FROM Persons;
当 table 为空时,COALESCE()
将 return 2999
,对于 +1
,结果将是 3000
table.