php - 选择有值(value)的列

标签 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_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)

通常,大量这样的列对表明数据结构很差。您可能应该有另一个表,其中包含 idtypeviewsum 列。

另一种缩短代码的方法是使用 MySQL 函数 elt()field():

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

关于php - 选择有值(value)的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30953904/

相关文章:

php - 如何防止 PHP 中的 SQL 注入(inject)?

mysql - 无法部署应用程序

php - mysql中如何清除某一列的数据而不删除它

PHP 7 RC3 : How to install missing MySQL PDO

php - 证书 x509 Laravel 身份验证 SSL

php - CodeIgniter 查询不会返回正确的数据

PHP PDO 扩展不可用是命令行

列的数据类型更改后的 MySQL 警告

mysql - 改善MySQL SELECT性能

php - 从 mysql 回显更多行