在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
表达式的每个布尔表达式具有相同的数据类型。