Скажем, у меня есть кое-что, как основной, какMySQL возвращаемый результат запроса, если условие выполняется, без повторения запроса
SELECT IF((1 + 2) >=0, (1 + 2), 0)
FROM DUAL
, который, очевидно, будет возвращать 3.
Есть ли способ, чтобы не повторять ввода запроса хотите вернуться (здесь 1 + 2)?
Чтобы включить контекст, я хочу вернуть количество оставшихся задач для текущего месяца (по крайней мере, 4 должно быть выполнено), но если уже сделано более 4, больше не нужно делать больше Я хочу вернуть 0.
то, что я сделал это
IF((4 - IFNULL((LONG QUERY RETURNING THE NUMBER OF TASKS DONE THIS MONTH FOR A PARTICULAR USER),0)) >= 0,
(4 - IFNULL((LONG QUERY RETURNING THE NUMBER OF TASKS DONE THIS MONTH FOR A PARTICULAR USER),
0)
Но есть способ, чтобы не повторить запрос, так как это долго, и я не хочу, сервер должен выполнить тот же запрос дважды ?
Дело в том, что это часть большего запроса. Это один из _select_expr_ оператора SELECT. Я не думаю, что это было бы возможно ... –
@JPP. Вероятно, вам нужно будет показать пример * актуального * запроса. Но, насколько я могу судить, [согласно документу] (http://dev.mysql.com/doc/refman/5.0/en/select.html), * select_expr * разрешен в 'SELECT ... INTO ' –
-Необновляя первый комментарий, я не видел вашего редактирования во время написания - я не думал о том, чтобы делать' MAX() ', но теперь, когда вы это сказали, это действительно сработает. Но метод, который я должен использовать, - это тот, который вы предложили. Я не знал, что могу это сделать, спасибо! –