Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL-Query potrzebne do znalezienia różnych identyfikatorów prawdopodobnie przy użyciu IN i 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)
                    )

Jak wspomniał Jeffrey L Whitledge, powyższe zapytanie zwróci każdy przepis, który zawiera co najmniej jeden składnik na żądanej liście i brak na liście niepożądanej. Jeśli jednak chcesz zwrócić przepisy zawierające wszystkie składniki na pożądanej liście i żadne na niepożądanej liście, które możesz zrobić:

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

W tym scenariuszu musisz najpierw określić liczbę pożądanych składników.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql - WYJAŚNIJ WYBÓR z WIDOKU szuka we wszystkich wierszach głównej tabeli

  2. Grupowanie wielu instrukcji Mysql w celu pobrania liczby wielu statusów

  3. Jak importować i eksportować bazę danych MySQL

  4. Dlaczego ciągle otrzymuję niezdefiniowane symbole podczas kompilowania prostej aplikacji mysql c na MAC OSX?

  5. Python Matplotlib oraz MySQL i Ginput