2015-06-20 89 views
0
ID | aa_view | aa_sum | bb_view | bb_sum | cc_view | cc_sum | dd_view | dd_sum | 
-------------------------------------------------------------------------------- 
4 | 0 | 0 | SF | 47 | SF | 43 | 0 | 0 | 

如何在xx_view的值为'SF'的情况下只能返回列xx_sum的查询。 (SF值不固定到任何列,但如果有xx_view“SF” xx_sum将具有大于0的值)选择具有价值的列

我尝试使用SELECT IF方法,但我想这只是一样正常查询。我的意思是它只是显示所有的领域与他们的价值。

+0

'选择xx_sum WHERE xx_view LIKE“SF'' – Allkin

+0

可能重复,请阅读MySQL的 HTTP选择非零列://stackoverflow.com/questions/28297205/select-non-zero-columns-in-mysql – vitr

+0

@Allkin谢谢你的回应。但xx表示列名称 –

回答

0

一种方法是一个巨大的case语句:

select (case when aa_view = 'SF' then aa_sum 
      when bb_view = 'SF' then bb_sum 
     . . . 
     end) 

通常情况下,很多列对像这表明一个贫穷的数据结构。您应该可能有另一个表格,其列表为id,type,viewsum

另一种方法导致更短的代码使用MySQL的功能elt()field()

select elt(field('SF', aa_view, bb_view, . . .), 
      aa_sum, bb_sum, . . .) 
+0

使用case语句不起作用,它只返回1个字段 –

+0

@KhairilAzizeeAyub。 。 。你的问题不清楚。由于英文只包含单数的单词,因此您似乎只需要一个值。 –

+0

对不起,先生,我的英语不好。 –