首页 > 解决方案 > 需要根据一个 where 条件排除所有行

问题描述

我有一个包含三个表的数据库。recipe使用这些列调用一个表:

EntryDate, Recipename, IngredientName, IngredientQty, QtyMeasurement

目前数据库中只有两个食谱。第一个食谱叫做 Kitchen Sink Cookies,有 17 种成分,第二个食谱叫做 No Bake Cookies II,只有 6 种成分。

食谱 1(厨房水槽)使用鸡蛋作为原料。我需要找到所有不使用鸡蛋的食谱。

到目前为止,我只能让它返回两个食谱或什么都不返回。我已经用谷歌搜索了几个小时,但无法让查询工作。

这是我尝试过的最新查询,它没有返回任何内容。

Use recipes;
Go

Select
    RecipeName
From
    recipe
Where
    RecipeName Not In
    (
        select
            RecipeName
        from
            recipe
        where
            IngredientName Not Like 'EGG%'
        Group By
            RecipeName
    );
Go

所以我需要做的是,如果食谱的成分是鸡蛋,我需要从输出中排除食谱名称。

有没有人有任何想法,或者我可以查看的链接(我还没有看过),或者代码示例?

感谢您提前提供任何帮助。

标签: sql-servertsql

解决方案


这有帮助吗?

    SELECT * FROM recipe WHERE Recipename NOT IN
    (SELECT Recipename FROM recipe WHERE IngredientName LIKE 'EGG%')

或者

    SELECT r1.* from recipe r1
    LEFT JOIN recipe r2 on r1.Recipename = r2.Recipename AND r2.IngredientName LIKE 'EGG%'
    WHERE r2.Recipename is NULL

推荐阅读