【发布时间】:2018-10-23 17:08:02
【问题描述】:
我想通过两个词的组合创建一个巨大的列表。字典中的每个单词都应该与所有其他单词结合。换句话说,我将拥有Total^2 组合。每个单词都有一个不同的 ID,我只在组合表中生成两个 id 的组合。
我想定期检查是否遗漏了任何组合,以便生成并将其添加到数据库中。我发现this Q/A 可以生成所有可能的组合,但我不知道如何使用 SQL 查询找到不存在的组合,可能是这样的:
select * from words a ... join words b
where (a.id, b.id) not in (select * from combinaions)
如果 SQL 对此没有直接的解决方案,请您建议一种算法来以编程方式执行此操作。请注意,可能缺少一些 ID,因为我删除了一些单词,所以我不能对整数使用线性循环。
combinations表有两列(第一个id,第二个id),两个id都来自表words
【问题讨论】:
-
您的数据结构如何?
-
我编辑了问题:组合表有两列(第一个 id,第二个 id)两个 id 都来自表词@Zack
-
您的“类似这样”的建议可能并不遥远。可能包括
not in选择查询中的特定列,所以where (a.id, b.id) not in (select id1, id2 from combinations)。发布您的表结构会有所帮助。
标签: sql sql-server