Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL-Query е необходима за намиране на различни идентификатори, вероятно използващи IN и НЕ 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)
                    )

Както спомена Джефри Л. Уитледж, горната заявка ще върне всяка рецепта, която има поне една съставка в желания списък и нито една в нежелания списък. Въпреки това, ако искате да върнете рецепти, които съдържат всички съставките в желания списък и нито една в нежелания списък, можете да направите:

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

В този сценарий ще трябва първо да определите броя на желаните съставки.




  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_* API

  2. Вземете всички вмъкнати идентификатори, когато вмъквате няколко реда с една заявка

  3. mysql ляво външно присъединяване

  4. MySQL - как да покажа най-новата тема за нишка

  5. InterfaceError (0, '')