选择值为

时间:2015-06-20 12:17:01

标签: php mysql

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_sum具有值' SF',我该如何进行仅返回列xx_view的查询。 (值SF不固定为任何列,但如果xx_view具有' xx_sum的值大于0,则

我尝试使用SELECT IF方法,但我猜它和普通查询一样。我的意思是它只是显示所有领域的价值。

1 个答案:

答案 0 :(得分:0)

一种方法是一个巨大的案例陈述:

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

通常情况下,很多像这样的列都表明数据结构很差。您可能应该有另一个包含idtypeviewsum列的表格。

导致代码更短的另一种方法是使用MySQL函数elt()field()

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