sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2008, olika WHERE-satser med en fråga

Du behöver inte, du kan komma runt det genom att göra något liknande

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

Men bara för att du kan göra något betyder det inte att du borde. Mindre utförlig SQL betyder inte bättre prestanda, så använd något som:

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

medan den motsvarar den första frågan bör resultera i bättre prestanda eftersom den kommer att optimeras bättre.



  1. Hur du verifierar domänägande

  2. Skriv ut felsökningsinformation från lagrad procedur i MySQL

  3. postgresql-sortera array efter ord i varje element

  4. PHP float/dubbel lagrad som MySQL DECIMAL