当前位置: 首页 > 知识库问答 >
问题:

Presto在构造中支持NOT吗?

柳胜
2023-03-14
SELECT DISTINCT person_id
FROM my_table
WHERE person_id NOT IN (SELECT person_id FROM my_table WHERE status = 'hungry')

谁能解释一下我如何用presto编写这个查询?我发现另一篇文章似乎暗示它的工作正确,所以我有点困惑。

共有1个答案

空英达
2023-03-14

不要使用not in。如果返回的值为null,则不返回任何行。注意:这是SQL的工作方式,而不是任何特定数据库的特性。

而是使用not exists:

SELECT DISTINCT t.person_id
FROM my_table t
WHERE NOT EXISTS (SELECT  
                  FROM my_table t2
                  WHERE t2.status = 'hungry' AND
                        t2.person_id = t.person_id
                 );

实际上,我可能会建议对此进行聚合--您已经基本上使用select distinct进行聚合:

select person_id
from my_table t
group by person_id
having sum(case when status = 'hungry' then 1 else 0 end) = 0;
 类似资料:
  • 我实现了BigQuery插件。BigQuery支持类型,它可以在Presto中表示为类。 在中创建,它具有方法,该方法只要求接受类的实例。 这意味着在我实现Presto的方法时,我必须为具有类型的字段返回。 但是有package private abstract方法,这使我无法实现该类。唯一的子级具有package private constructor,并且没有可以为我构建实例的工厂或构建器。

  • 问题内容: 我想知道AWS Athena中是否支持OFFSET。对于mysql,以下查询正在运行,但在雅典娜中却给了我错误。任何示例都将有所帮助。 从雇员中选择* empSal> 3000 LIMIT 300 OFFSET 20 问题答案: 雅典娜基本上是由Presto管理的。从Presto311开始,您可以使用语法或等效的ANSI SQL :。 您可以在超越极限中阅读更多内容,Presto满足O

  • 组件模型 构造支持器是实现了 IContributeComponentModelConstruction 接口的对象。顾名思义,在组件模型创建之后,它们其将正确的构造到最终状态。 :warning: 不要在支持器的外面修改 ComponentModel: 不鼓励在构造支持器的外面修改组建模型。在 组建模型 被它的构造支持器处理完成之后,它应该是只读的。 在以后的任何时候修改都可能导致并发(conc

  • Gradle The JUnit Platform Gradle Plugin has been discontinued The junit-platform-gradle-plugin developed by the JUnit team was deprecated in JUnit Platform 1.2 and discontinued in 1.3. Please switch t

  • 我在使用Reformation的RxJava支持链接观察对象时遇到了问题。我可能误解了如何使用它,否则它可能是改装中的一个bug。希望这里有人能帮我理解发生了什么事。编辑:我正在对这些响应使用MockRestaAdapter—这可能与RxSupport实现略有不同有关。 这是一个假的银行应用程序。它正在尝试进行传输,传输完成后,它应该执行帐户请求以更新帐户值。这基本上只是我试用flatMap的一个

  • 问题内容: Java是否有C ++的类似物: 我需要使用自己的数据类型。 问题答案: Java绝对没有结构:)但是,您在此处描述的内容看起来像JavaBean类。