SQL 子查询优化

标签 sql sqlite nested-queries

我有两张 table ,CategoriesRecipeCategories

**Categories**
CategoryID varchar (Primary Key)
Name varchar

**RecipeCategories**
RecipeID varchar
CategoryID varchar
Composite primary key

我正在寻找一种方法来返回所有类别的 CategoryID 和 Name,以及配方是否实际上属于该类别。我可以使用类似的东西
SELECT c.CategoryID, c.Name, 
         (SELECT COUNT(*) 
          FROM RecipeCategories 
          WHERE RecipeID = @recipeId AND CategoryID = c.CategoryID))
FROM Categories c

但我认为如果 table 太大,这不会扩大。

最佳答案

SELECT c.CategoryID
     , c.Name
     , Case When (r.RecipeID is null) Then 'No' Else 'Yes' End
  FROM Categories c
  left join RecipeCategories r on r.CategoryID = c.CategoryID
                              and r.RecipeID = @recipeId

关于SQL 子查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8625607/

相关文章:

mysql - 转换子查询加入创建 View

php - SQL 将行从一个表复制到另一个表但只复制一次

mysql - 3 个表的 SQL 计数

mysql 只选择具有一定长度的组

javascript - 发布数据而不刷新+调用另一个jquery函数

Sqlite:当行不存在或为空时将最大值设置为零

python - 在 Python 中打开一个压缩的 SQLite 数据库

android - sqlite首先按WHERE排序

elasticsearch - 多层嵌套映射和查询上的“Mapping definition has unsupported parameters”错误

mysql - 如何在 MySQL 中选择最近 30 天的日期?