How to optimize this multiple condition query?

Viewed 43
        IF EXISTS(select * from vehicle where VehicleName = @VehicleName)
        BEGIN
            RAISERROR ('VehicleName is already exists.', 16, 1);
            RETURN -1
        END

        IF EXISTS(select * from vehicle where VIN = @VIN)
        BEGIN
            RAISERROR ('VIN number is already exists.', 16, 1);
            RETURN -1
        END

        IF EXISTS(select * from vehicle where TagNumber = @TagNumber)
        BEGIN
            RAISERROR ('TagNumber is already exists.', 16, 1);
            RETURN -1
        END
1 Answers

you can use something like this:

declare @msg varchar(100) = '';
select @msg+= c.msg+';'
from (  select 'VehicleName exists' as msg
        from vehicle
        where VehicleName = @VehicleName
        union
        select 'VIN number exists'
        from vehicle
        where VIN = @VIN
        union
        select 'TagNumber exists'
        from vehicle
        where TagNumber = @TagNumber ) as c

if @msg !='' 
    begin
        --whatever you need
        select @msg
    end
else
    begin
        --whatever you want
        select 'nothing found!'
    end
Related