开发者

check field1 and field2 from single table

In SQL: I want to check. From single table,

 if(开发者_运维知识库field1 = 1 and DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= field2) then
        return count(*)
     else
        return "false"

thanks 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

Note that this only works in the SELECT list, or HAVING clause, and you should have a GROUP BY clause on field1 and field2. The reason is that COUNT() is an aggregate function. Because field1 and field2 appear outside an aggregatee function, aggregation for those fields must be enforced with a GROUP BY clause. Most RDBMS-es won't allow you to write this unless there is an appropriate GROUP BY clause, but MySQL will, and will silently return rubbish for those fields.

BTW - I think you should probably not write "false" but simply FALSE - right now both legs of the choice have a different type (boolean vs string). The db will probably coerce types, but it is still bad practice. You should ensure that the expression for each brach of the CASE expression have the same data type.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜