簡體   English   中英

從 SQL 中的左連接和內連接中減去計數

[英]Subtract count from left join and inner join in SQL

我想合並兩個表,並從內連接的結果表中減去左連接的結果表中的訂單數。 這就是我所做的,但我不知道這是否正確或如何進行?

WITH t1 AS (
    SELECT *
    FROM orders
    LEFT JOIN food ON orders.id = food.id
),
t2 AS (
    SELECT *
    FROM orders
    INNER JOIN food ON orders.id = food.id
)

SELECT
/* now what? */   

現在我想減去兩個表中的行數。

我不知道如何繼續,我應該重新加入表格並做減法,有沒有更簡單的方法?

您甚至不需要兩個單獨的查詢來回答您的問題。 左連接和內連接在結果集上的唯一區別是前者將保留不映射的訂單記錄。 所以,你可以簡單地寫:

-- query #3

SELECT *
FROM orders o
LEFT JOIN food f
    ON f.id = o.id
WHERE f.id IS NULL;

如果將上面的結果集與內部連接查詢#2 組合,您將獲得不帶WHERE子句的總左連接查詢#1 結果集。

所以 count(query #1) = count(query #2) + count(query #3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM