SQL 从 select 和数学运算中插入
SQL Insert from a select and a math operation
我正在使用 LibreOffice base,因为我需要在 Windows 和 OSX 中使用相同的数据库。
我有一个 table 有数百个 CLIENT_ID 作为主键和 CLIENT_NAME 作为字段。主键长度为 6 个字符:
CLxxxx
我希望能够插入一个新客户端并使用单个 SQL 语句来完成,而不是 VBA 或 PHP。就像使用自动编号一样。
我想做的是:
1) 获取最高键,从中删除"CL"。例如。对于 CL0344,我需要 0344
2) 将最高密钥加1以获得新客户端的新密钥:0355
3) 在 table
中插入新的 CLIENT
第一点很容易实现:
SELECT TOP 1 RIGHT(CLIENT_ID,4) AS LAST_RECORD FROM CLIENTS
ORDER BY CLIENT_ID DESC
但是如何将此 select 的结果加 1 并使用相同的语句进行插入?
您可以使用这个查询:-
SELECT CAST(RIGHT(MAX(CLIENT_ID),4) AS INTEGER) + 1
FROM CLIENTS;
我正在使用 LibreOffice base,因为我需要在 Windows 和 OSX 中使用相同的数据库。
我有一个 table 有数百个 CLIENT_ID 作为主键和 CLIENT_NAME 作为字段。主键长度为 6 个字符:
CLxxxx
我希望能够插入一个新客户端并使用单个 SQL 语句来完成,而不是 VBA 或 PHP。就像使用自动编号一样。
我想做的是:
1) 获取最高键,从中删除"CL"。例如。对于 CL0344,我需要 0344
2) 将最高密钥加1以获得新客户端的新密钥:0355
3) 在 table
中插入新的 CLIENT第一点很容易实现:
SELECT TOP 1 RIGHT(CLIENT_ID,4) AS LAST_RECORD FROM CLIENTS
ORDER BY CLIENT_ID DESC
但是如何将此 select 的结果加 1 并使用相同的语句进行插入?
您可以使用这个查询:-
SELECT CAST(RIGHT(MAX(CLIENT_ID),4) AS INTEGER) + 1
FROM CLIENTS;