2014-09-04 71 views
0

我有一个表名视频MySQL数据库查询与if条件

表视频

id name upload_date 

1 one  1408336348 
2 two  1409884215 

现在我要选择,如果上传的最后2天之间的视频,然后是所有的数据也计算或没有

结果像

id name upload_date new 

1 one  1408336348 no 
2 two  1409884215 yes 

我使用这个查询,但无法工作

SELECT v.*,(if(from_unixtime(v.upload_date) < NOW() - INTERVAL 2 DAY) then 'no' else 'yes') 
AS new FROM `video` as v 

查询返回错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') then 'no' else 'yes') 
AS new FROM `video` as v 
LIMIT 0, 25' at line 1 
+0

什么是你查询的回报? – 2014-09-04 19:01:37

+1

什么意思是“不能工作?”。任何错误或错误的结果? – Jens 2014-09-04 19:02:08

回答

0

尝试使用情况

SELECT v.* 
    ,case 
     when (from_unixtime(v.upload_date) < NOW() - INTERVAL 2 DAY) then 'yes' 
     else 'no') 
    end AS new 
FROM `video` as v 
1

这不是在一个MySQL的IF正确的语法。试着这样说:

SELECT v.*, 
    IF(from_unixtime(v.upload_date) < NOW() - INTERVAL 2 DAY, 'yes', 'no') AS new 
FROM `video` as v 
0

问案声明:

SELECT v.*, 
    CASE WHEN from_unixtime(v.upload_date) < NOW() - INTERVAL 2 DAY 
     THEN 'Yes' 
     ELSE 'No' 
    END AS new 
FROM `video` 

这是ANSI标准的方式做到这一点的SQL。

+1

@ R.T。复制/意大利面故障。已经解决了它。 – 2014-09-04 19:04:12

+0

是的,我现在看到编辑:) – 2014-09-04 19:04:38