这里有一个关于SQL的简短问题(使用sql-server-2008)。
我有一个映射表names
,包含以下列:
ID
DisplayName
我想要做的第一件事是执行以下代码:SELECT [ID] FROM [names] WHERE [DisplayName] = 'chuck';
但是,如果名为'chuck'的记录不存在于数据库中,我希望创建它,并返回自动递增的ID
。
我想知道SQL是否有一些内置的简便方法来完成这个任务,还是我必须选择冗长的方式?
冗长的方式可能像这样:
SELECT COUNT(ID) AS count, ID FROM names WHERE DisplayName='chuck'
IF(count > 0)
SELECT ID as ReturnID;
ELSE
BEGIN
INSERT INTO names(DisplayName) values('chuck');
SELECT scope_identity() as ReturnID;
END
我没有测试过最后那个语句,但我认为长方法应该是这样的。如果没有内置的方法,我希望有人可以简单地更正这个语句(因为我确定它不完全正确)。
OUTPUT
的地方,但在你的情况下这不起作用。它仅适用于插入或更新场景。否则,当记录已经存在时,输出将为空。 - Jens Mühlenhoff