我有一個表有copy
列。 copy
列有兩個值:base
和override
。我有一個簡單的問題。我想返回所有行where copy = 'override'
但如果沒有,則返回所有行。SQL if或coelesce語句where條款
我的邏輯是這樣的:返回其中副本被覆蓋的所有行。如果沒有,則返回所有行,因爲剩下的行只有base
行。
我很難搞清楚這一點。這可以在一個聲明中完成嗎?
謝謝。
我有一個表有copy
列。 copy
列有兩個值:base
和override
。我有一個簡單的問題。我想返回所有行where copy = 'override'
但如果沒有,則返回所有行。SQL if或coelesce語句where條款
我的邏輯是這樣的:返回其中副本被覆蓋的所有行。如果沒有,則返回所有行,因爲剩下的行只有base
行。
我很難搞清楚這一點。這可以在一個聲明中完成嗎?
謝謝。
您可以嘗試
SELECT *
FROM `YourTable`
WHERE `copy` = (SELECT IF(
(
SELECT `copy`
FROM `YourTable`
WHERE `copy` = 'override'
LIMIT 1) = "override",
'override',
'base'
))
而不是coelesce您嘗試CASE語句? –
請顯示您嘗試使用的SQL語句。 – BWS