sql >> Database teknologi >  >> RDS >> Mysql

SQL-forespørgsel er nødvendig for at finde forskellige id'er, der sandsynligvis bruger IN og NOT IN

Select Distinct ...
From Recipes As R
Where R.ingredient in(ingredient_a, ingredient_b...)
    And Not Exists(
                    Select 1
                    From Recipes As R2
                    Where R2.Recipe = R.Recipe
                        And R2.Ingredient In(ingredient_d)
                    )

Som Jeffrey L Whitledge nævnte, vil ovenstående forespørgsel returnere enhver opskrift, der har mindst én ingrediens på den ønskede liste og ingen på den uønskede liste. Men hvis du ville returnere opskrifter, der indeholdt alle ingredienserne på den ønskede liste og ingen på den uønskede liste, du kunne gøre:

Select Distinct ...
From Recipes As R
Where Exists    (
                Select 1
                From Recipes As R2
                Where R2.Recipe = R.Recipe
                    And R2.ingredient in(ingredient_a, ingredient_b...)
                Having Count(*) = @CountOfPassedIngredients
                )
    And Not Exists(
                    Select 1
                    From Recipes As R2
                    Where R2.Recipe = R.Recipe
                        And R2.Ingredient In(ingredient_d)
                    )

I dette scenarie skal du først bestemme antallet af ønskede ingredienser.




  1. Syntaksfejl eller adgangsovertrædelse:1055 Udtryk #17 i gruppe efter

  2. MySQL multidimensionel? Dynamisk pivot

  3. Kan MySql 5.0 have en visning af en tabel placeret på en anden server

  4. SQL-database med variabelt antal kolonner