在mysql表中的多个列中查找特定行的模式

时间:2013-10-09 15:50:16

标签: mysql

我知道如何在mysql的单个列中找到模式(最常见的值),但我想弄清楚是否可以在特定行的多个列中找到该模式。到目前为止,我已经空手而归,如何去做。

我的表格如下:

dataid    Jan    Feb    Mar    Apr
a          0      1      1      1
b          0      0      0      1
c          1      0      0      0
d          7      0      3      3          

每行的模式是:

a 1
b 0
c 0
d 3

平均值对我正在使用的数据中所需的结果不起作用,因此我需要为所有列中的每一行找到最常见的值。我知道这不存在,但我正在寻找的东西是

"select mode(Jan+Feb+Mar+Apr) from tablename where dataid=c"

(我的最终目标是找到表中所有数据类,其中每月列的模式为零)

有没有一些简单的方法可以做到这一点(没有昂贵的子查询)或者我最好在php中计算模式并将其作为单独的列添加到表中?此表得到更新,因此每次都必须更新表中的模式值,我只需要一个快速项目,所以试图避免该路由。

1 个答案:

答案 0 :(得分:0)

这不是你最终想要的吗?

SELECT dataid
FROM your_table
WHERE
    IF(Jan, 1, 0) +
    IF(Feb, 1, 0) +
    IF(Mar, 1, 0) +
    IF(Apr, 1, 0) < 3