DB火鸟。
我有以下声明
SELECT a.ID FROM CLIENTS a
我希望我的 INSERT 语句到另一个表中以使用每个值,比如
INSERT INTO BANKS (ID, NR, MONEY)
VALUES (
gen_id(gen_name, 1),
"there should be client ID from the SELECT statement above",
3000
)
我可以用一条语句实现吗?
DB火鸟。
我有以下声明
SELECT a.ID FROM CLIENTS a
我希望我的 INSERT 语句到另一个表中以使用每个值,比如
INSERT INTO BANKS (ID, NR, MONEY)
VALUES (
gen_id(gen_name, 1),
"there should be client ID from the SELECT statement above",
3000
)
我可以用一条语句实现吗?
为此,您可以使用
insert ... select
:如果您有一个
CLIENTS
在插入时生成 ID 的触发器,或者 - Firebird 3 -ID
是一个标识列,那么您可以将其简化为:你的问题有点不清楚。我更喜欢使用 Sql Server,但我相信 Firebird 支持 ROW_NUMBER 函数。以下是一个使用该函数进行自增的 Sql Server 示例。
如果您只想在 Banks 表中为 Client 表中的每个对应行插入一行,我认为一个简单的 INSERT/SELECT 语句就可以了:
如果您的意图是将来自客户端的每一行插入 BANK(其中客户端 ID 成为 BANK 上的 NR 列)并且您想要“自动递增”BANK 上的 ID,那么这应该有效: