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
方法,但我猜它和普通查询一样。我的意思是它只是显示所有领域的价值。
答案 0 :(得分:0)
一种方法是一个巨大的案例陈述:
select (case when aa_view = 'SF' then aa_sum
when bb_view = 'SF' then bb_sum
. . .
end)
通常情况下,很多像这样的列都表明数据结构很差。您可能应该有另一个包含id
,type
,view
和sum
列的表格。
导致代码更短的另一种方法是使用MySQL函数elt()
和field()
:
select elt(field('SF', aa_view, bb_view, . . .),
aa_sum, bb_sum, . . . )