首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排除特定记录的Mysql SQL查询

问排除特定记录的Mysql SQL查询
EN

Stack Overflow用户
提问于 2020-11-06 14:48:38
回答 1查看 41关注 0票数 0

我有一个具有外键prior_bill_id的bills表,它引用一个账单记录。对于每个账单,可以有一个或多个readings,有一个用于关联的联合表bill_readings。

代码语言:javascript
复制
| bills         |
| --------------|
| id            |
| prior_bill_id |
代码语言:javascript
复制
| readings |
| -------- |
| id       |
代码语言:javascript
复制
| bill_reaadings |
| ---------------|
| bill_id        |
| reading_id     |

我正在试着想出一个SQL来查找一个账单的所有读数,不包括给定账单的前一个账单的读数,这是我想出来的,如果有什么问题,请你纠正我好吗?提亚

代码语言:javascript
复制
    WITH CTE_readings AS (
      SELECT DISTINCT br.bill_id, br.reading_id
        FROM bills
        INNER JOIN bill_readings br ON br.bill_id=bills.id
    ), CTE_prior_readings AS (
      SELECT DISTINCT bills.id bill_id, pbr.reading_id
        FROM bills
        INNER JOIN bill_readings pbr ON pbr.bill_id=bills.prior_bill_id
    ) SELECT r.bill_id, r.reading_id
        FROM CTE_readings r
        LEFT OUTER JOIN CTE_prior_readings pr ON pr.reading_id=r.reading_id
        WHERE pr.bill_id IS NULL;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-06 17:43:53

下面是我提出的查询,它可以按预期工作

代码语言:javascript
复制
    WITH CTE_readings AS (
      SELECT DISTINCT br.bill_id, br.reading_id
        FROM bill_readings br
    ), CTE_prior_readings AS (
      SELECT DISTINCT bills.id bill_id, pbr.reading_id
        FROM bills
        INNER JOIN bill_readings pbr ON pbr.bill_id=bills.prior_billing_id
    ) SELECT r.bill_id, r.reading_id
        FROM CTE_readings r
        WHERE NOT EXISTS (
          SELECT 1
            FROM CTE_prior_readings pr
            WHERE r.bill_id = pr.bill_id
              AND r.reading_id = pr.reading_id
        )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64710009

复制
相关文章

相似问题

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