Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server 2008, różne klauzule WHERE z jednym zapytaniem

Nie musisz, możesz to obejść, robiąc coś takiego

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

Jednak to, że możesz coś zrobić, nie oznacza, że ​​powinieneś. Mniej gadatliwy SQL nie oznacza lepszej wydajności, więc użyj czegoś takiego:

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

odpowiednik pierwszego zapytania powinien skutkować lepszą wydajnością, ponieważ będzie lepiej zoptymalizowany.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Nie można wstawić jawnej wartości dla kolumny tożsamości w tabeli „Tabela”, gdy IDENTITY_INSERT jest ustawione na OFF

  2. SQL Server:Baza danych utknęła w stanie przywracania

  3. GETDATE() Przykłady w SQL Server (T-SQL)

  4. Aktualizacje ad hoc katalogów systemowych są niedozwolone

  5. Wykonywanie przygotowanych instrukcji generowanych przez NHibernate w SQL Server Management Studio