簡體   English   中英

MYSQL PHP 選擇查詢的反面

[英]MYSQL PHP select the opposite of a query

我有兩張桌子。 一張表包含我需要的一切,包括 cardId(PK) 另一個名稱是用戶類型表。 該表存儲了 userId 和 cardId(FK)。

SELECT ci.cardId, ci.year, ci.name, ci.number
    FROM USERCARDS uc 
    INNER JOIN CARDINDEX ci ON uc.cardId = ci.cardId 
    WHERE uc.userId = 'USER_ID'

因此,對於這個查詢時,它會顯示CardId中,年份,名稱,並從數CARDINDEX 它只會顯示用戶保存在USERCARDS中的USERCARDS

我想做相反的事情。 如果用戶正在查看 5 張卡片,但CARDINDEX有 50 張卡片,則此查詢將顯示五張卡片的信息。 但是,對於新查詢,我想顯示剩余的 45 張卡片。 基本上,他們無法添加他們已經關注的卡片。

我試圖讓uc.cardId != ci.cardId但這沒有用。 我有點失落。

您可以將其LEFT JOINLEFT JOIN

SELECT ci.cardId, ci.year, ci.name, ci.number
FROM CARDINDEX ci LEFT JOIN 
     USERCARDS uc 
     ON uc.cardId = ci.cardId AND
        uc.userId = 'USER_ID'
WHERE uc.cardID IS NULL;

或者,您可以使用 `NOT EXISTS 來編寫它:

SELECT ci.cardId, ci.year, ci.name, ci.number
FROM CARDINDEX ci 
WHERE NOT EXISTS (SELECT 1
                  FROM USERCARDS uc 
                  WHERE uc.cardId = ci.cardId AND
                        uc.userId = 'USER_ID'
                 );

暫無
暫無

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

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