मान लीजिए कि मेरे पास एक टेबल है (कॉलम a1 के साथ) और b (कॉलम b1 और b2 के साथ) और मैं बाईं ओर बाहरी प्रदर्शन करता हूं
SELECT *
FROM a LEFT OUTER JOIN b
ON a.a1 = b.b1
फिर b1 और b2 NULL होगा जहाँ a1 के मान का b1 का कोई मिलान मूल्य नहीं है।
क्या मैं NULL के बजाय b2 के लिए डिफ़ॉल्ट मान प्रदान कर सकता हूं? ध्यान दें कि COALESCE यहाँ काम नहीं करेगा, क्योंकि मैं नहीं है डिफ़ॉल्ट मान b2 में संभावित NULLs ओवरराइड करने के लिए जहां चाहते है B1 मिलान a1 के एक मूल्य।
यह है, एक और बी के साथ के रूप में
CREATE TABLE a (a1)
AS VALUES (1),
(2),
(3) ;
CREATE TABLE b (b1,b2)
AS VALUES (1, 10),
(3, null) ;
a1 b1 | b2
--- --------
1 1 | 10
2 3 | NULL
3
और बी 2 के लिए एक डिफ़ॉल्ट, कहते हैं, 100, मैं परिणाम प्राप्त करना चाहता हूं
a1 | b1 | b2
---------------
1 | 1 | 10
2 | NULL | 100
3 | 3 | NULL
इस सरल मामले में मैं इसे "हाथ से" कर सकता था, यह देखकर कि आउटपुट में b1 NULL है या नहीं। क्या यह सामान्य रूप से सबसे अच्छा विकल्प है, या एक अधिक मानक और खाने का तरीका है?
sql
(जिसका अर्थ है "SQL क्वेरी भाषा"। यह टैग किसी विशिष्ट DBMS उत्पाद या बोली को निरूपित नहीं करता है)। हिस्सा:[b2]=CASE WHEN ... END
एक अमान्य (मानक) SQL अभिव्यक्ति है।