mqsql - 检查所选行是否包含相同的值

时间:2016-05-07 01:43:24

标签: mysql sql

我需要检查mysql,如果某些列包含相同的值,但实际上还不知道该值。到目前为止我发现的所有解决方案都将count与where子句结合使用。但这并不适合我,因为我不知道colums的价值观。例如:

Index   ColB    ColC    ColD    ColE
1       1       cat     1.3     black
2       1       cat     1.3     black
3       1       cat     1.3     white
4       1       cat     1.3     tiger
5       1       cat     1.3     white

我想检查3列ColB,ColC和ColD是否具有相同的值。对于上表,它应该返回true。但是对于下表,它应该返回false

Index   ColB    ColC    ColD    ColE
1       1       dog     1.3     black
2       1       cat     1.3     black
3       2       cat     1.3     white
4       1       cat     1.3     tiger
5       1       cat     2.7     white

规则应该是这样的:if(ColB_hasDifferentValues || ColC_hasDifferentValues || ColD_hasDifferentValues){return true};

这可能吗?正如我之前所说,我不知道ColC中包含哪些动物,因为用户可以插入新动物。

提前多多感谢!

1 个答案:

答案 0 :(得分:3)

只需使用max()min()

select (case when max(b) = min(b) and max(c) = min(c) and max(d) = min(d)
             then 'same'
             else 'different'
        end)
from t;

此逻辑忽略NULL个值(OP根本没有提到NULL个值)。这个想法可以扩展,但逻辑有点复杂。