Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果所有值都满足条件,则返回_Sql_Oracle - Fatal编程技术网

Sql 如果所有值都满足条件,则返回

Sql 如果所有值都满足条件,则返回,sql,oracle,Sql,Oracle,我试图返回子表中所有符合条件的记录所在的所有行 T1: 1 2 3 4 5 T2: 我需要识别T1中的所有ID,它们是T2中的水果, T2.价值单位(苹果、葡萄、香蕉、猕猴桃、蜜露、浆果) 期望输出: 1 2 4 我试过这个: select t1.id from t1,t2 where t1.id = t2.id and t2.value in ('Apple','Grapes','Banana','Kiwi','Honeydew','Berries') 但它不会返回我需要的输出,它还

我试图返回子表中所有符合条件的记录所在的所有行

T1:
1
2
3
4
5
T2:

我需要识别T1中的所有ID,它们是T2中的水果, T2.价值单位(苹果、葡萄、香蕉、猕猴桃、蜜露、浆果)
期望输出:

1
2
4
我试过这个:

select t1.id from t1,t2
where t1.id = t2.id
and t2.value  in ('Apple','Grapes','Banana','Kiwi','Honeydew','Berries') 

但它不会返回我需要的输出,它还会返回#3和5。

显然,您要做的是删除包含不是水果的项目的组:

SELECT T1.ID
  FROM T1
  WHERE T1.ID NOT IN (SELECT T2.T1_ID
                        FROM T2
                        WHERE T2.VALUE NOT IN ('Apple','Grapes','Banana','Kiwi','Honeydew','Berries'))
  ORDER BY T1.ID

显然,您要做的是删除包含水果的项目的组:

SELECT T1.ID
  FROM T1
  WHERE T1.ID NOT IN (SELECT T2.T1_ID
                        FROM T2
                        WHERE T2.VALUE NOT IN ('Apple','Grapes','Banana','Kiwi','Honeydew','Berries'))
  ORDER BY T1.ID

假设您希望ID在
t2中至少有一行

select t2.id
from t2
group by t2.id
having sum(case when t2.value not in ('Apple', 'Grapes', 'Banana', 'Kiwi', 'Honeydew', 'Berries')
                then 1 else 0
           end) = 0;  -- nothing that isn't fruit

假设您希望ID在
t2中至少有一行

select t2.id
from t2
group by t2.id
having sum(case when t2.value not in ('Apple', 'Grapes', 'Banana', 'Kiwi', 'Honeydew', 'Berries')
                then 1 else 0
           end) = 0;  -- nothing that isn't fruit

在这里添加一个可能的答案

在这种情况下,您可以使用
EXISTS

SELECT
    T1.ID
FROM
    T1
WHERE
    NOT EXISTS (
        SELECT
            1
        FROM
            T2
        WHERE
            T2.T1_ID = T1.ID
            AND T2.VALUE NOT IN (
                'Apple',
                'Grapes',
                'Banana',
                'Kiwi',
                'Honeydew',
                'Berries'
            )
    )


干杯

在此添加一个可能的答案

在这种情况下,您可以使用
EXISTS

SELECT
    T1.ID
FROM
    T1
WHERE
    NOT EXISTS (
        SELECT
            1
        FROM
            T2
        WHERE
            T2.T1_ID = T1.ID
            AND T2.VALUE NOT IN (
                'Apple',
                'Grapes',
                'Banana',
                'Kiwi',
                'Honeydew',
                'Berries'
            )
    )


干杯

你怎么知道哪些值是水果?我会显式搜索这些值。让我把它添加到我的问题中,你的文字列表中有一个大写问题。它看起来应该是
(“苹果”、“葡萄”、“香蕉”、“猕猴桃”、“蜜露”、“浆果”)
。更新了问题“如何知道哪些值是水果?”我会显式搜索这些值。让我把它添加到我的问题中,你的文字列表中有一个大写问题。它看起来应该是
(“苹果”、“葡萄”、“香蕉”、“猕猴桃”、“蜜露”、“浆果”)
。更新了问题,但这也将消除1、2和4。我恭敬地认为不会。请看DBFIDLE。但这也将消除1、2和4。我恭敬地说,它不会。看小提琴。