Comments 10
вы хотя-бы укажите сервер баз данных, который используете
select @Available = 1 where (select count(*) from Numbers) <= @MaxAmount and not exists (select top 1 1 from Numbers where ID = @ID)
СУБД принял за SQL Server. Задача настолько легка, что не танет ни на какие звездочки.
СУБД принял за SQL Server. Задача настолько легка, что не танет ни на какие звездочки.
Вы правы, с вложенными запросами все действительно тривиально. Зубры SQL до появления оператора CASE ваяли нечто вроде этого:
SELECT @Available = SIGN(1 + SIGN(COUNT(*) - @MaxAmount)))*(1 - ABS(SIGN(SUM(1 - SIGN(ABS(ID - @ID))))))
FROM Numbers
SELECT @Available = SIGN(1 + SIGN(COUNT(*) - @MaxAmount)))*(1 - ABS(SIGN(SUM(1 - SIGN(ABS(ID - @ID))))))
FROM Numbers
Sign up to leave a comment.
SQL-задачка