Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server 2008, различни клаузи WHERE с една заявка

Не е нужно, можете да го заобиколите, като направите нещо като

SELECT  *
FROM    [Query]
WHERE   (@Parameter = 1 AND Column1 = 8)
OR      (@Parameter = 2 AND Column2 = 8)
OR      (@Parameter = 3 AND Column3 = 8)

Въпреки това, само защото можете да направите нещо, не означава, че трябва. По-малко подробен SQL не означава по-добра производителност, така че използвайте нещо като:

IF @Parameter = 1
    BEGIN
        SELECT  *
        FROM    [Query]
        WHERE   Column1 = 8
    END
ELSE IF @Parameter = 2
    BEGIN
        SELECT  *
        FROM    [Query]
        WHERE   Column2 = 8
    END
ELSE IF @Parameter = 3
    BEGIN
        SELECT  *
        FROM    [Query]
        WHERE   Column3 = 8
    END

докато еквивалентът на първата заявка трябва да доведе до по-добра производителност, тъй като ще бъде оптимизиран по-добре.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете ред с максимална стойност в една колона

  2. Проверете дали даден обект е таблица, изглед или съхранена процедура в SQL Server с помощта на функцията OBJECTPROPERTY()

  3. използвайки променлива на таблица с sp_executesql

  4. Flask-SQLAlchemy различен брой записи за .count() и .all()

  5. Клаузата WHERE е по-добре да се изпълни преди IN и JOIN или след това