在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
答案 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;