Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL-Query cần thiết để tìm các ID riêng biệt có thể sử dụng IN và 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)
                    )

Như Jeffrey L Whitledge đã đề cập, truy vấn trên sẽ trả về bất kỳ công thức nào có ít nhất một thành phần trong danh sách mong muốn và không có thành phần nào trong danh sách không mong muốn. Tuy nhiên, nếu bạn muốn trả lại các công thức có chứa tất cả các thành phần trong danh sách mong muốn và không có thành phần nào trong danh sách không mong muốn mà bạn có thể làm:

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

Trong trường hợp này, trước tiên bạn cần xác định số lượng các thành phần mong muốn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để sử dụng lại các giá trị auto_increment?

  2. Cách kết nối nhà phát triển sql với máy chủ XAMPP MYSQL

  3. Tại sao tôi nhận được System.Data.DataRowView thay vì các giá trị thực trong Listbox của mình?

  4. cách chọn các trường từ các db khác nhau có cùng bảng và tên trường

  5. Tại sao lựa chọn này cho ví dụ cập nhật hoạt động?