简单的问题,我仍然无法弄清楚。我有两张桌子。
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”,然后将它们放入数组中,然后检查是否在共享< / strong>桌子,但我认为这是一个可怕的解决方案......桌子最多可以增加约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
答案 0 :(得分:2)
尝试使用INSERT..INTO SELECT
INSERT INTO shared (type, account, id)
SELECT 'twitter' type, 'my-twitter-account' account, MIN(a.id) ID
FROM items a
LEFT JOIN shared b
ON a.id = b.id
WHERE b.id IS NULL