我有这个问题。我有一个Currency
表,如下所示:
Id|IntKey|Text
1 10 USD
2 20 EUR
A有另一个表 - Accounts
,其中我有外键CurrencyId
。问题是,当我收集帐户信息时,Currency作为字符串值或我数据库中的Text
列值来找我。不过,我想使用IntKey
来匹配CurrencyId
,因此我希望在INSERT
查询中根据字符串值提供IntKey
。
我自己实现的简单方法是首先获取我需要的价值只是为了单独选择
SELECT IntKey FROM Currency WHERE Text = @param
然后执行它,获取值并在我的INSERT
中使用它但是我会把它合并到一个查询(如果可能的话)我试过这个:
INSERT INTO [DB].[dbo].[Accounts] VALUES
(@IBAN, SELECT IntKey FROM [dbo].[Currency] WHERE Text = @param, ...)
然后
SqlCommand command = new SqlCommand(insertNewAccount, connection);
command.ExecuteScalar();
但这不起作用。这是可能的,我该如何实现呢?
答案 0 :(得分:2)
你很接近它。
INSERT INTO [DB].[dbo].[Accounts]
SELECT @IBAN, @otherValue, @anotherValue, IntKey FROM [dbo].[Currency]
WHERE Text = @param
不需要VALUES
,SELECT
必须包含所有列和变量。
答案 1 :(得分:1)
你尝试过括号吗?
INSERT INTO [DB].[dbo].[Accounts] VALUES
(
@IBAN,
(SELECT IntKey FROM [dbo].[Currency] WHERE Text = @param),
...
)