[英]How to use CASE or IF (etc) ... statements in JOIN clause?
我在數據庫中有幾個表,名稱為data
, sticker
和video
在sticker
和視頻表中...我有一個名為data_id
的外鍵(實際上鏈接到data
表)
在data
表中,我有一個名為type
的列,用於存儲“數據類型”(例如sticker
或video
等...)
想根據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;
我知道IF
和ELSEIF
部分在查詢中是完全錯誤的,我只是想傳達這個概念並告訴你我想要什么......我不知道如何在 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
);
如評論中所述,並且上述查詢的復雜性表明,您似乎遇到了設計問題。 video
和sticker
表可能應該與要添加的類型的新列合並。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.