2014-02-19 38 views
0

嵌套查詢我想使用MySQL查詢像這樣:爲全球整體選擇

SELECT * FROM COUNTRY_TABLE WHERE COUNTRY='INDIA' 

它提供了包含國家如印度,但是當國家印度不存在於表中,那麼它應該給數據結果結果爲全球或全部結果在單個查詢。

+0

@Gone你可以給我舉例 – Swapnil

回答

0
Set @param = null; 

SELECT * 
FROM your_table 
WHERE country = CASE 
        WHEN @param IS NULL THEN country 
        ELSE @param 
       END; 

在看到它的SQL小提琴工作:http://www.sqlfiddle.com/#!2/da2d82/2

另一種解決方案:

SELECT * 
FROM your_table 
WHERE country = COALESCE(@param, country); 
+0

上面的代碼提供了錯誤你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,在第3行輸入 – Swapnil

+0

作爲印度給出的輸入仍然給出所有記錄時,在'選擇*從PostView where國家=情況下當@param爲空然後是國家/地區' ( – Swapnil

+0

是否嘗試過第二種解決方案? –

0

嘗試這樣

DROP PROCEDURE IF EXISTS ConditionalSelect; 

DELIMITER $$ 

CREATE PROCEDURE `ConditionalSelect`() 
    BEGIN 

    SELECT COUNT(*) INTO @varCount FROM Country WHERE `name` = 'India'; 

    IF @varCount >=1 THEN 
     SELECT * FROM Country WHERE `name` = 'India'; 
    ELSE 
     SELECT * FROM Country; 
    END IF;   

    END$$ 

DELIMITER ;