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
方法,但我猜它与正常查询一样。我的意思是它只是显示所有字段及其值。
最佳答案
一种方法是一个巨大的 case 语句:
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, . . . )
关于php - 选择有值(value)的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30953904/