MySQL的IF()函数的标准方法

时间:2011-02-28 14:48:04

标签: mysql sql sql-server

我发现MySQL's IF() function对于给我一个有效的方法来执行条件聚合函数非常有用,例如:

SELECT SUM(IF(`something`='a', `something_weight`, 0)) AS `A`, SUM(`something_weight`) AS `All` FROM...

据我了解,此功能是MySQL的一项功能,通常在使用SQL的数据库中不可用。

是否有更标准的方法在数据库方面实现此功能?

5 个答案:

答案 0 :(得分:3)

我不是sql guru而是case case

http://dev.mysql.com/doc/refman/5.0/en/case-statement.html

可能是标准的ansi。

答案 1 :(得分:2)

我相信使用CASE语句会更加标准。

SELECT SUM(CASE `something` WHEN 'a' THEN `something_weight` ELSE 0 END) AS `A`, 
       SUM(`something_weight`) AS `All` 
    FROM...

答案 2 :(得分:2)

CASE是可用于执行条件聚合函数的通用命令。有关详细信息,请参阅http://www.1keydata.com/sql/sql-case.html

答案 3 :(得分:1)

在MSSQL中,你可以这样做:

SELECT SUM(CASE something WHEN 'a' THEN something_weight ELSE 0 END) as [a],
       SUM(something_weight) as [All]
FROM ...

答案 4 :(得分:1)

查看使用CASE:CASE (Transact-SQL)

SELECT SUM(CASE WHEN something ='a'那么XXX                 什么东西='b'那么你                 ELSE 0                 结束           )AS ColumnName