Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL-Query diperlukan untuk menemukan ID berbeda yang mungkin menggunakan IN dan 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)
                    )

Seperti yang disebutkan Jeffrey L Whitledge, kueri di atas akan mengembalikan resep apa pun yang memiliki setidaknya satu bahan dalam daftar yang diinginkan dan tidak ada dalam daftar yang tidak diinginkan. Namun, jika Anda ingin mengembalikan resep yang mengandung semua bahan-bahan dalam daftar yang diinginkan dan tidak ada dalam daftar yang tidak diinginkan yang dapat Anda lakukan:

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

Dalam skenario ini, Anda harus terlebih dahulu menentukan jumlah bahan yang diinginkan.




  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 Select Query - Dapatkan hanya 10 karakter pertama dari suatu nilai

  2. MySQL menunjukkan hitungan 0 untuk tanggal tanpa catatan

  3. Bagaimana cara menggunakan regexp pada hasil sub kueri?

  4. cara mendapatkan id sisipan terakhir setelah memasukkan kueri dalam catatan aktif codeigniter

  5. mysql di mana string diakhiri dengan angka