Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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_Conditional Statements_Teradata - Fatal编程技术网

Sql 在这张桌子上,我怎么才能只给那些喝过咖啡或啤酒但从未喝过奶昔或水的人回敬呢?

Sql 在这张桌子上,我怎么才能只给那些喝过咖啡或啤酒但从未喝过奶昔或水的人回敬呢?,sql,conditional-statements,teradata,Sql,Conditional Statements,Teradata,然后我只想见艾丽卡和大卫(因为他们只喝咖啡和/或啤酒),而不想见安德烈斯,因为他喝奶昔;而不是泰勒,因为他既有奶昔又有水。你可以使用EXISTS和not EXISTS的组合: Column A | Column B (Beverage) Andres Coffee Erica Coffee David Beer Tyler Beer Tyler Beer Andres Shake Erica Coffee Erica

然后我只想见艾丽卡和大卫(因为他们只喝咖啡和/或啤酒),而不想见安德烈斯,因为他喝奶昔;而不是泰勒,因为他既有奶昔又有水。

你可以使用
EXISTS
not EXISTS
的组合:

Column A | Column B (Beverage)
Andres      Coffee
Erica       Coffee
David       Beer
Tyler       Beer
Tyler       Beer
Andres      Shake
Erica       Coffee
Erica       Coffee
David       Beer
David       Coffee
Tyler       Water
Tyler       Shake

您可以组合使用
存在
不存在

Column A | Column B (Beverage)
Andres      Coffee
Erica       Coffee
David       Beer
Tyler       Beer
Tyler       Beer
Andres      Shake
Erica       Coffee
Erica       Coffee
David       Beer
David       Coffee
Tyler       Water
Tyler       Shake

您可以使用“不存在”排除和“不同”显示唯一列A

SELECT *
FROM YourTable AS T
WHERE EXISTS(SELECT 1 FROM YourTable
             WHERE ColumnA = T.ColumnA
             AND ColumnB IN ('Coffee','Beer'))
AND NOT EXISTS(SELECT 1 FROM YourTable
               WHERE ColumnA = T.ColumnA
               AND ColumnB IN ('Shake','Water'))

您可以使用“不存在”排除和“不同”显示唯一列A

SELECT *
FROM YourTable AS T
WHERE EXISTS(SELECT 1 FROM YourTable
             WHERE ColumnA = T.ColumnA
             AND ColumnB IN ('Coffee','Beer'))
AND NOT EXISTS(SELECT 1 FROM YourTable
               WHERE ColumnA = T.ColumnA
               AND ColumnB IN ('Shake','Water'))
简单分组方式。
不需要相关子查询(存在/不存在)

简单分组方式。
不需要相关子查询(存在/不存在)


你需要[摇一摇水]或[摇一摇水]-你的主题与你的问题不匹配。你需要[摇一摇水]或[摇一摇水]-你的主题与你的问题不匹配。
   select columnA from t where columnB in ('Coffee','Beer')
      minus
   select columnA from t where columnB in ('Shake')
      minus
   select columnA from t where columnB in ('Shake','Water')
   having count(distinct columnB)=2
;