0

我有一个查询返回自上次记录的“操作”以来的时间?

SELECT unix_timestamp(now()) - unix_timestamp(dateTime)
FROM action_table
WHERE action='$action'
ORDER BY dateTime DESC
LIMIT 1

唯一的问题是0如果没有找到行,它会返回。

如果表中没有针对所请求的操作的行,关于如何让这个不返回任何结果的任何想法?

编辑:这实际上是按我想要的方式工作,如果表中没有任何操作,则不返回任何结果。将结果转换为 int 时,我的 php 只是搞砸了。

4

1 回答 1

0

好吧,我会使用这样的 IF..ELSE 语句

SELECT CASE WHEN <br>
   (SELECT 
      unix_timestamp(now()) - unix_timestamp(dateTime)
    FROM action_table
    WHERE action='aaa'
    ORDER BY dateTime DESC
    LIMIT 1) > 0
THEN 
   (SELECT 
      unix_timestamp(now()) - unix_timestamp(dateTime)
      FROM action_table
      WHERE action='aaa'
      ORDER BY dateTime DESC
      LIMIT 1)
ELSE 
   'no result' 
END;

这是一个关于sqlfiddle的工作示例。

于 2013-01-25T01:49:22.673 回答