我需要检查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中包含哪些动物,因为用户可以插入新动物。
提前多多感谢!
答案 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
个值)。这个想法可以扩展,但逻辑有点复杂。