mysql连接表,仅返回基于时间戳比较的行

mysql连接表,仅返回基于时间戳比较的行,mysql,sql,Mysql,Sql,我在mysql数据库中有一个表,如:simplified,以表明我的观点 PARENT ID | EXPIRE | ITEM 0 | 1000 | FOO 1 | 2000 | BAR 以及与表a具有一对多关系的另一个 ITEMS ID | FK | TIMESTAMP 0 | 0 | 1488555058 1 | 0 | 1488555059 2 | 0 | 1488555060 考虑到ITEMS表正在不断地填充具有

我在mysql数据库中有一个表,如:simplified,以表明我的观点

PARENT
ID | EXPIRE | ITEM
0  | 1000   | FOO
1  | 2000   | BAR
以及与表a具有一对多关系的另一个

ITEMS
    ID | FK | TIMESTAMP 
    0  | 0  | 1488555058 
    1  | 0  | 1488555059
    2  | 0  | 1488555060       
考虑到ITEMS表正在不断地填充具有当前时间戳的新值。我想查询db并只返回ITEMS表中不包含时间戳>=CURRENT_TIME-EXPIRE_TIME的记录的记录,因此结果将仅是自过期时间过后未收到新项的父项

我写了一篇不起作用的文章:

   select P.ID
    from PARENT as P
    JOIN     ITEMS as I
    ON       I.FX =
             (
             SELECT  I2.FK
             FROM    ITEMS as I2
             WHERE   P.ID = I2.FK
             AND  ((((UNIX_TIMESTAMP()* 1000) - I2.TIMESTAMP)))  > P.EXPIRE
             ORDER BY TIMESTAMP DESC
             limit 1
             )
我想要的是,如果每个父项作为一个时间戳大于UNIX_时间戳的项过期,并且每个项都有一条记录而没有一条,则返回零行

卡住-任何帮助将不胜感激

编辑-根据下面的答案,这是一个工作查询-我在这里需要的是一个结果,其中包含的项目没有比过期时间新的项目,并将其标记为批处理

UPDATE PARENT P
SET BATCHID = ?
where not exists(
    select 1 from ITEMS V
    WHERE   V.FK = P.ID
    AND ((((UNIX_TIMESTAMP() * 1000) -  V.TIMESTAMP) / 1000) < P.EXPIRE)
    AND P.BATCHID is NULL
    ORDER BY P.PROCESSEDTIMESTAMP ASC

)

这是一个令人困惑的join语句。我将使用不存在这样的:

select *
from Parent as p
where not exists (
    select 1
    from Items
    where FK = p.ID
    and TIMESTAMP  > ((UNIX_TIMESTAMP()* 1000) - p.EXPIRE)
    )

这是一个令人困惑的join语句。我将使用不存在这样的:

select *
from Parent as p
where not exists (
    select 1
    from Items
    where FK = p.ID
    and TIMESTAMP  > ((UNIX_TIMESTAMP()* 1000) - p.EXPIRE)
    )

谢谢这引导我在正确的方向-最终结果在编辑你得到了它,你也可以摆脱秩序,由在子选择。它没有任何效果,将使您的查询更快。谢谢这引导我在正确的方向-最终结果在编辑中您得到了它,您也可以通过在子选择中取消订单。它没有任何效果,将使您的查询更快。