我有3個表; CASES
,USERS
和USER_META
。對於這個問題,你需要知道USER_META
表有3列; user_id
,meta_key
和meta_value
Oracle SELECT WHERE值存在或不存在
每個用戶都與許多CASES
相關聯,並且每個USER
與許多USER_META
我當前的查詢是這樣的
SELECT CASES.*, USERS.*, USER_META.*
FROM CASES
JOIN USERS ON USERS."user_id" = CASES."user_id"
JOIN USER_META ON USER_META_"user_id" = USERS."user_id"
這種方法的問題是,每個用戶相關有USER_META的LOT,所以我的結果集有太多的行。我怎麼可以重寫此查詢,以便在USER_META。「meta_key」等於某個值我只能選擇USER_META但仍得到的結果,如果他們沒有這個USER_META。「meta_key」尚且
例如:
SELECT CASES.*, USERS.*, USER_META.*
FROM CASES
JOIN USERS ON USERS."user_id" = CASES."user_id"
JOIN USER_META ON USER_META_"user_id" = USERS."user_id"
WHERE USER_META."meta_key" = 'my_key'
這將工作的偉大,但並不是所有的用戶都在「meta_key」列中的「my_key」的價值,我們仍需要觀察他們的情況。對於沒有「meta_key」的用戶,結果應該只返回CASE和USER列。
我該如何重寫這個查詢,以便它爲這兩個用戶使用此meta_key而不使用?
謝謝,我希望這是有道理的。
'選擇個案*,用戶*,USER_META *' - 結果集將包括重複列,這是不是。一個好主意。 – onedaywhen