Тот же запрос MySQL Пользовательские переменные - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь использовать определяемые пользователем переменные MySQL , но из-за ограничений я не могу использовать их так же, как это показано, когда один запрос устанавливает переменную, а второй использует ее. Мое требование - иметь возможность использовать его несколько раз в запросе.

Рассмотрим следующее:

SELECT (Some Really Taxing Calculation) AS Total FROM Purchases
WHERE Total < 55 AND itemName = "Bananas"
OR Total > 90 AND itemName = "Apples"
OR Total = 30 AND itemName = "Peaches"
ORDER BY Total

Было бы неплохо выполнить вычисление Total только один раз, а затем использовать результат несколько раз на протяжении запроса. Прямо сейчас, единственный способ заставить его работать в одном запросе - это перезапустить его для каждого места, где он используется, так как Total возвращает ошибку о том, что использовался неизвестный столбец.

Ответы [ 2 ]

1 голос
/ 23 июня 2011

Ввод итогового вычисления в подзапросе ...

SELECT
  Total
FROM
  (SELECT (Some Really Taxing Calculation) AS Total, * FROM Purchases) AS Purchases
WHERE Total < 55 AND itemName = "Bananas"
   OR Total > 90 AND itemName = "Apples"
   OR Total = 30 AND itemName = "Peaches"
ORDER BY
  Total

Примечание. Подзапрос (inline-view) расширяется MySQL при генерации своего PLAN.Заключение запроса в скобки не обязательно означает, что вы делаете его глупо неэффективным:)

0 голосов
/ 23 июня 2011
SELECT *, total.Value
FROM Purchases, (SELECT COUNT(*) as Value .... Some Really Taxing Calculation) total
WHERE Total < 55 AND itemName = "Bananas"
OR Total > 90 AND itemName = "Apples"
OR Total = 30 AND itemName = "Peaches"
ORDER BY Total

Таким образом, в основном выполняйте вычисления в запросе вложенного типа SELECT в предложении FROM и присваивайте ему общее значение, которое затем можно использовать в другом месте в вашем запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...