选择左(列A,2)或右(列A,1)

时间:2011-12-28 21:55:46

标签: mysql union temp-tables

MySql中是否有一种方法可以使用或在选择列中。例如

select left(columnA,2) or right(columnA,1) as columnAlias, sum(columnB)
from table
where ((left(columnA,2) in ('aa','bb','cc')) or (right(columnA,1) in ('a,','b','c')))
group by columnAlias

我所拥有的是一个表,其中列的前2个字符或列的最后一个字符表示设施。我需要按设施加总值。联盟让我在那里的一部分然后我可以遍历结果数据集并在代码中总结(或者执行存储过程以返回总和),但我想知道是否有办法从查询中获取它。

我已尝试将联合查询用作即时临时表并对其执行select和group但如果没有从任何一个select statments返回的记录,那么它会抛出“column columnA not not null error 。

还尝试了上面的语法,但没有得到我期待的结果。通过查询执行此操作的其他任何方法吗?

1 个答案:

答案 0 :(得分:1)

使用CASE可能是您最好的选择。

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