在SQL中: 我想檢查。從單一的表,從單表中檢查字段1和字段2
if(field1 = 1 and DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= field2) then
return count(*)
else
return "false"
感謝 v.srinath
在SQL中: 我想檢查。從單一的表,從單表中檢查字段1和字段2
if(field1 = 1 and DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= field2) then
return count(*)
else
return "false"
感謝 v.srinath
SELECT CASE WHEN (field1 = 1 AND DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= field2)
THEN COUNT(*)
ELSE 0
END
FROM SomeTable
CASE
WHEN field1 = 1
AND DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= field2
THEN COUNT(*)
ELSE 'false'
END
注意的是,在SELECT
列表這隻作品,或HAVING
條款,你應該有一個FIELD1條款GROUP BY
和域2。原因是COUNT()
是一個聚合函數。由於field1
和field2
出現在聚合函數之外,因此必須使用GROUP BY
子句強制實施這些字段的聚合。除非有合適的GROUP BY
條款,否則大多數RDBMS-es將不允許你寫這個,但是MySQL將會並且默默地爲這些字段返回垃圾。
順便說一句 - 我認爲你不應該寫"false"
,而只是FALSE
- 現在選擇的兩條腿都有不同的類型(布爾值vs字符串)。數據庫可能會強制類型,但這仍然是不好的做法。您應該確保CASE
表達式的每個布爾表達式具有相同的數據類型。