我有一些可能或可能有或沒有空值的列的結果集。我想要第一個非空結果大於1,那麼在合併我的列時添加此次要條件的最佳方式是什麼?有額外條件的MySQL合併
例如
result:
col1 col2 col3
1 null 2
null 1 3
null null 4
回報2 3 4
我有一些可能或可能有或沒有空值的列的結果集。我想要第一個非空結果大於1,那麼在合併我的列時添加此次要條件的最佳方式是什麼?有額外條件的MySQL合併
例如
result:
col1 col2 col3
1 null 2
null 1 3
null null 4
回報2 3 4
lad2025的答案是正確的,你有一個,如果有爲每列。但是,因爲你必須有這些IF函數,無論如何,你不妨做
SELECT IF(col1>1, col1, if(col2>1, col2, if (col3>1, col3, null)))
或類似
SELECT CASE WHEN col1>1 THEN col1
WHEN col2>1 THEN col2
WHEN col3>1 THEN col3
ELSE null END
任何一項都將是一個小更高效,更需要較少的代碼比使用合併,因爲那麼你仍然必須使用,如果在任一列空出1的任何值
您可以用單一CASE
語句做到這一點:
SELECT CASE WHEN IFNULL(col1, 0) > 1 THEN col1
WHEN IFNULL(col2, 0) > 1 THEN col2
WHEN IFNULL(col3, 0) > 1 THEN col3
END
FROM mytable
的情況下,也可以寫爲:
WHEN colN IS NOT NULL AND colN > 1 THEN colN
如果您測試> 1,則不需要測試null – AgapwIesu
您不能使用多個ELSE,也不需要最後一個ELSE,默認情況下會返回null。 –
@JuanCarlosOropeza對於多餘的ELSE而言,你是對的,這是一場腦呃逆。糾正。但是我留下空,因爲我總是發現更可讀。 – AgapwIesu