Стандартный метод для функции MySQL IF()
Я обнаружил, что функция IF() MySQL очень полезна, поскольку дает эффективный способ выполнения функций условного агрегата, например:
SELECT SUM(IF(`something`='a', `something_weight`, 0)) AS `A`, SUM(`something_weight`) AS `All` FROM...
Насколько я понимаю, эта функция является функцией MySQL и, как правило, недоступна в базах данных, использующих SQL.
Есть ли более стандартный метод для достижения этой функциональности на стороне базы данных?
5 ответов
В MSSQL вы можете сделать это:
SELECT SUM(CASE something WHEN 'a' THEN something_weight ELSE 0 END) as [a],
SUM(something_weight) as [All]
FROM ...
Я не гуру sql но заявление случая
http://dev.mysql.com/doc/refman/5.0/en/case-statement.html
может быть стандартным ANSI.
CASE - это общая команда, которую вы можете использовать для выполнения условных агрегатных функций. Для получения дополнительной информации см. http://www.1keydata.com/sql/sql-case.html
Я считаю, что использование оператора CASE будет более стандартным.
SELECT SUM(CASE `something` WHEN 'a' THEN `something_weight` ELSE 0 END) AS `A`,
SUM(`something_weight`) AS `All`
FROM...
Рассмотрим использование CASE: CASE (Transact-SQL)
ВЫБЕРИТЕ СУММУ (СЛУЧАЙ КОГДА-ЛИБО ='a', ТОГДА XXX, КОГДА-ЛИБО ='b', ТОГДА YYY, ДАЛЕЕ 0 КОНЕЦ) AS ColumnName