簡體   English   中英

如何在 JOIN 子句中使用 CASE 或 IF (etc)... 語句?

[英]How to use CASE or IF (etc) ... statements in JOIN clause?

我在數據庫中有幾個表,名稱為datastickervideo

sticker和視頻表中...我有一個名為data_id的外鍵(實際上鏈接到data表)

data表中,我有一個名為type的列,用於存儲“數據類型”(例如stickervideo等...)

想根據type列用SQL找到對應的表做join ,不知道怎么做(先查詢比較高級復雜)

例如,像這樣:

SELECT d.name

FROM data d

IF (d.type == 'sticker') JOIN sticker s on d.id = s.data_id
ELSEIF (d.type == 'video') JOIN video v on d.id = v.data_id
# ...

WHERE d.id = 2;

我知道IFELSEIF部分在查詢中是完全錯誤的,我只是想傳達這個概念並告訴你我想要什么......我不知道如何在 sql 中正確地做到這一點......

你能幫助我嗎???

..................................................... ..........

此處不需要CASE表達式。 我會使用現有邏輯表達您的查詢:

SELECT name
FROM data d
WHERE
    type == 'sticker' AND
    EXISTS (
        SELECT 1
        FROM sticker s
        WHERE d.id = s.data_id
    )
    OR
    type == 'video' AND
    EXISTS (
        SELECT 1
        FROM video v
        WHERE d.id = v.data_id
    );

如評論中所述,並且上述查詢的復雜性表明,您似乎遇到了設計問題。 videosticker表可能應該與要添加的類型的新列合並。

暫無
暫無

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

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