Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Узнать есть ли результат SELECT в процедуре ?без COUNT?  [new]
kealog
Member

Откуда:
Сообщений: 24
В процедуре выполняется "тяжёлый" SELECT. Как правильно узнать, есть ли результат (строки) этого запроса?
19 сен 17, 00:40    [20804819]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли результат SELECT в процедуре ?без COUNT?  [new]
miksoft
Member

Откуда:
Сообщений: 36389
а куда девается результат этого SELECT-а?
19 сен 17, 07:26    [20804873]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли результат SELECT в процедуре ?без COUNT?  [new]
kealog
Member

Откуда:
Сообщений: 24
miksoft,
Процедура вызывается из php.
Если результат запроса существует, то он и отдаётся.
Если результата нет, то выполняется другой select, и его результаты выдаются как результат работы процедуры.
19 сен 17, 22:04    [20807443]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли результат SELECT в процедуре ?без COUNT?  [new]
miksoft
Member

Откуда:
Сообщений: 36389
В таком варианте, наверное, это можно сделать только в PHP.

Если исходный запрос можно модифицировать, то можно поиграться с функцией LAST_INSERT_ID() с параметром.
19 сен 17, 22:38    [20807536]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли результат SELECT в процедуре ?без COUNT?  [new]
kealog
Member

Откуда:
Сообщений: 24
miksoft,
Спасибо. Жаль, что нет вариантов. Как в PHP сделать знаю.
20 сен 17, 00:26    [20807703]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли результат SELECT в процедуре ?без COUNT?  [new]
miksoft
Member

Откуда:
Сообщений: 36389
kealog,

а исходный запрос модифицировать нельзя?
20 сен 17, 07:29    [20807797]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли результат SELECT в процедуре ?без COUNT?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 16231
kealog
В процедуре выполняется "тяжёлый" SELECT.
А насколько по максимуму тяжёл результат выполнения этого запроса? может, разумнее делать выборку не сразу в выходной поток, а во временную таблицу? там-то посмотреть количество записей - раз плюнуть... если ноль - то в ту же таблицу сделать и вторую выборку. А перед выходом из процедуры делать безусловный SELECT из TEMP в выходной поток.
20 сен 17, 08:22    [20807820]     Ответить | Цитировать Сообщить модератору
 Re: Узнать есть ли результат SELECT в процедуре ?без COUNT?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 16231
Схематично:
CREATE PROCEDURE
    CREATE TEMPORARY TABLE temp ENGINE=Memory
    SELECT /* 1 */ INTO temp
    SELECT COUNT(*) INTO @cnt FROM temp
    IF @cnt=0 THEN
        SELECT /* 2 */ INTO temp
    END IF
    SELECT * FROM temp
    -- DROP TABLE temp
END
20 сен 17, 08:26    [20807824]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить