首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL联接与不存在

SQL联接与不存在
EN

Stack Overflow用户
提问于 2022-05-27 18:21:26
回答 1查看 206关注 0票数 0
代码语言:javascript
运行
复制
comms                       
+-------------+
|    uuid     |
+-------------+
| comm_uuid_1 |
| comm_uuid_2 |
+-------------+

events

+--------------+-------------+
|     uuid     |  comm_uuid  |
+--------------+-------------+
| event_uuid_1 | comm_uuid_1 |
| event_uuid_2 | comm_uuid_1 |
+--------------+-------------+

actions
+---------------+-------+---------------------+
|     uuid      | type  |     event_uuid      |
+---------------+-------+---------------------+
| random_uuid_1 | stack | event_uuid_1        |
| random_uuid_2 | pop   | event_uuid_1        |
+---------------+-------+---------------------+

基本上,我试图获得它们的事件符合某些条件的所有通信,但是过滤器在事件的操作中,这是我使用的查询:

代码语言:javascript
运行
复制
SELECT * 
FROM comms JOIN events ON events.comm_uuid = comms.uuid 
AND (EXISTS (SELECT 1 FROM actions
WHERE events.uuid = actions.event_uuid AND actions.type = 'stack')) 
AND (not EXISTS (SELECT 1 FROM actions
WHERE events.uuid = actions.event_uuid AND actions.type = 'pop')) 

在本例中,该查询不应该返回任何内容,因为存在actions.type =堆栈的事件,但在与actions.type = pop相同的通信中也存在事件,由于某种原因,这将返回与action.type =堆栈相关的通信,我只希望在同一通信方式的事件中没有action.type = pop。

EN

回答 1

Stack Overflow用户

发布于 2022-05-27 22:35:40

代码语言:javascript
运行
复制
SELECT * FROM comms 
WHERE 
  EXISTS (
    SELECT 1 FROM actions
       JOIN events on (events.uuid = actions.event_uuid)
          WHERE events.comm_uuid = comms.uuid 
            AND actions.type = 'stack') 
  AND NOT EXISTS ( 
    SELECT 1 FROM actions
     JOIN events on (events.uuid = actions.event_uuid)
       WHERE events.comm_uuid = comms.uuid 
        AND actions.type = 'pop'
  )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72409614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档