2014-02-19 3 views
0

Я хочу использовать запрос MySQL, как это:Вложенный запрос для Worlwide выбора

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 Fiddle: http://www.sqlfiddle.com/#!2/da2d82/2

Другое решение:

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

выше код дает ошибку У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «Выбрать» из PostView, где country = case, когда @param имеет значение null, а затем «Страна Else» в строке 3 – Swapnil

+0

, когда я предоставляю данные, поскольку Индия все еще дает всю запись: ( – 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 ; 
Смежные вопросы