在SQL中: 我想检查一下。从单表,
if(field1 = 1 and DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= field2) then
return count(*)
else
return "false"
感谢 v.srinath
答案 0 :(得分:0)
SELECT CASE WHEN (field1 = 1 AND DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= field2)
THEN COUNT(*)
ELSE 0
END
FROM SomeTable
答案 1 :(得分:0)
CASE
WHEN field1 = 1
AND DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= field2
THEN COUNT(*)
ELSE 'false'
END
请注意,这仅适用于SELECT
列表或HAVING
子句,并且您应该在field1和field2上有GROUP BY
子句。原因是COUNT()
是一个聚合函数。由于field1
和field2
出现在aggregatee函数之外,因此必须使用GROUP BY
子句强制执行这些字段的聚合。大多数RDBMS-es都不允许你写这个,除非有一个适当的GROUP BY
子句,但是MySQL将会默默地为那些字段返回垃圾。
BTW - 我认为你可能不应该写"false"
而只是写FALSE
- 现在选择的两条腿都有不同的类型(布尔与字符串)。 db可能会强制类型,但它仍然是不好的做法。您应该确保CASE
表达式的每个brach的表达式具有相同的数据类型。