Как / можно запустить оператор выбора SQL внутри if? - PullRequest
2 голосов
/ 29 июня 2010

У меня проблемы с поиском синтаксиса для оператора (или возможно ли это вообще).

Мы работаем с SQL Server 2005, и я хотел бы сделать что-то вроде:

IF ((SELECT count(*) FROM mytable WHERE userid = 'myid' AND value = 3) < 1) then INSERT INTO mytable VALUES ('myid', 3)

Есть предложения? Спасибо

Ответы [ 3 ]

3 голосов
/ 29 июня 2010
IF ((SELECT count(*) FROM mytable WHERE userid = 'myid' AND value = 3) < 1)
BEGIN
    INSERT INTO mytable VALUES ('myid', 3)
END

IF / ELSE ссылка

или вы можете использовать NOT EXISTS

IF NOT EXISTS (SELECT * FROM mytable WHERE userid = 'myid' AND value = 3)
1 голос
/ 29 июня 2010

Вы можете попробовать это сделать в одном выражении:

INSERT INTO mytable
SELECT 'myid', 3
WHERE (SELECT count(*) FROM mytable WHERE userid = 'myid' AND value = 3) < 1
1 голос
/ 29 июня 2010
DECLARE @COUNT int

SET @COUNT=(SELECT count(*) FROM mytable WHERE userid = 'myid' AND value = 3)
IF (@COUNT < 1)
BEGIN
    INSERT INTO mytable VALUES ('myid', 3)
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...