选择表A中表B中没有任何新记录的项目

时间:2019-03-13 19:21:11

标签: mysql

table B中,我有一列created_at

我想从最后一个条目开始的1-2分钟内,从table A中选择所有未在table B中创建新行的行。

如果我在18:01:01在下表上运行查询,则结果应仅包含ID为1的tableA_id。

Table B
id, tableA_id createdAt
1, 1, 18:00:00
2, 1, 17:59:00
3, 2, 17:59:00
4, 3, 18:01:00

我当前的查询与下面的查询类似:

SELECT tableA.*
FROM tableA
INNER JOIN tableB ON tableB.tableA_id = tableA.id
WHERE tableB.created_at NOT BETWEEN NOW() AND NOW() - INTERVAL 1 MINUTE
    AND tableB.created_at BETWEEN NOW() - INTERVAL 1 MINUTE AND NOW() - INTERVAL 2 MINUTE

1 个答案:

答案 0 :(得分:2)

您要missing记录,不能使用INNER JOIN,因为这只会输出现有记录。

我不确定您想要哪个间隔。尝试从过去1分钟到现在没有任何记录。

SELECT tableA.*
FROM tableA
LEFT JOIN tableB ON tableB.tableA_id = tableA.id
                AND tableB.createdAt between now() interval -1 minute and now()
where tableB.tableA_id is null;