簡體   English   中英

返回與另一個表中的所有行至少有一個引用的所有行

[英]Return all rows that have at least one reference with all the rows in another table

我想為標題道歉,但我想不出更合適/更准確的標題(英語不是我的第一語言)

我怎樣才能歸還從所有物種中至少捕獲一條魚的所有人?

這是我的數據庫: 在此處輸入圖像描述

從上面的模式中,我應該只返回 ID 為 1 的人

這是將每人捕獲的不同物種數量與物種總數進行比較的一種方法:

SELECT ID_person
FROM capture  c
GROUP BY c.ID_person
HAVING COUNT(DISTINCT c.Id_species) = (SELECT COUNT(*) FROM species)

嘗試這個:

SELECT *
FROM person p
WHERE NOT EXISTS (
    SELECT *
    FROM species s
    WHERE NOT EXISTS (
        SELECT *
        FROM captures c
        WHERE 
            c.ID_species = s.ID_species
            AND c.ID_person = p.ID_person
    )
)

您要求的操作稱為關系除法

句子“給我所有每個物種至少有一次捕獲的人”可以重寫為“給我所有不存在任何沒有捕獲的物種的人”這就是不存在發揮作用的地方

暫無
暫無

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

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