2016-05-07 45 views
3

我需要在mysql中檢查某些列是否包含相同的值,但實際上並未知道該值。到目前爲止,我發現的所有解決方案都是將count與where子句結合使用。但這對我並不適用,因爲我不知道colums的價值。例如:mqsql - 檢查選定的行是否包含相同的值

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 

規則應該是某事像:如果(ColB_hasDifferentValues || ColC_hasDifferentValues || ColD_hasDifferentValues){返回true};

這可能嗎?正如我之前所說,我不知道ColC中包含哪些動物,因爲用戶可以插入新的動物。

非常感謝!

+0

你是否熟悉java和jdbc? –

+0

如果我明白你的問題,你想檢查一個表的所有行都有ColB ColC和ColD等於對嗎?如果只有一行不同,那麼你想要假? – olibiaz

+0

@EthanMoore不,我還沒有用過jbdc。正如我在答案中所寫的,我正在使用mysql。 –

回答

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值在所有)。這個想法可以擴展,但邏輯稍微複雜一點。

+0

謝謝,該解決方案就像一個魅力! –

相關問題