sql >> Database >  >> RDS >> Mysql

SQL-query nodig om verschillende ID's te vinden die waarschijnlijk IN en NOT IN gebruiken

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)
                    )

Zoals Jeffrey L Whitledge al zei, retourneert de bovenstaande zoekopdracht elk recept dat minstens één . heeft ingrediënt in de gewenste lijst en geen in de ongewenste lijst. Als u echter recepten wilt retourneren die alle . bevatten de ingrediënten in de gewenste lijst en geen enkele in de ongewenste lijst die u zou kunnen doen:

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)
                    )

In dit scenario moet u eerst het aantal gewenste ingrediënten bepalen.




  1. hoe kan ik de status tellen die is gewijzigd/bijgewerkt door categorieën voor een specifieke maand?

  2. Microsoft Access-memogegevenstype naar MySQL-gegevenstype

  3. Oracle JDeveloper 12c gebruiken met Oracle Database, deel 2

  4. hoe toegang te krijgen tot de opdrachtregel voor xampp in Windows