简单的问题,我仍然无法弄清楚。我有两张桌子。
Table items: id (INT), text (VARCHAR)
Table shared: type (VARCHAR), account (VARCHAR), id (INT)
解释:
表项包含推文列表。
共享表包含已共享(发送到 Twitter)的所有推文的列表。
现在我需要有一个查询,它为我提供项目表中尚未用于共享表中特定“类型”和“帐户”的最旧文本(最小的“id”)。
例子:
数据库看起来像这样。项目表中有两个项目,尚未共享任何项目。
Table items: [[1, "First Tweet"], [2, "Second Tweet"]]
Table shared: []
运行查询将返回 [1, "First Tweet"]。之后,我将在共享表中插入一个值,如下所示:
Table items: [[1, "First Tweet"], [2, "Second Tweet"]]
Table shared: [["twitter", "my-twitter-account", 1]]
再次运行查询将返回 [2, "Second Tweet"]。之后,我将在共享表中插入一个值,如下所示:
Table items: [[1, "First Tweet"], [2, "Second Tweet"]]
Table shared: [["twitter", "my-twitter-account", 1], ["twitter", "my-twitter-account", 2]]
我知道我可以通过首先从项目表中提取所有“id”,将它们放入一个数组中,然后检查“id”是否在共享表中,但我认为这是一个可怕的解决方案......表最多将增长到大约 10,000 个项目。
解决方案
编辑:我稍微修改了 JW. 的代码,它运行良好。谢谢!
我的查询:
SELECT a.id, a.text, MIN(a.id) ID
FROM items a
LEFT JOIN shared b
ON a.id = b.id
WHERE b.id IS NULL