【发布时间】:2017-01-17 17:31:13
【问题描述】:
我正在尝试创建一个查找表,其中元素的顺序很重要。我的查找表具有以下结构
id table1id table2id
1 1 1
2 1 2
3 1 3
4 2 2
5 2 1
6 2 3
我的目标是根据 table2ids 找到 table1id。所以我运行的示例查询是
Select table1id
from junctionTable
where table2ids in (1,2,3)
group by table1id
Having count(table1id) = 3
这可行,但是,它将返回 Table1Ids 1 和 2。我只想要具有 1、2、3 的特定顺序的 Table1ID,因此它应该只返回 TableId =1。
在表上放置一个订单列是可行的,但是随着项目数量的增加,它会使查询变得更加困难。
select table1id from junctionTable
where table2id =1 and order =1 and
table2id = 2 and order =2
etc...
还有什么我没有想到的可以做的吗?或者处理这种情况的最佳方法是什么?
这个问题源于我试图规范化表格。参考Normalize a table with tightly coupled data
【问题讨论】:
-
你知道
having是做什么的吗? -
id列是否反映了所需的顺序?如果不是,是的,您需要一些其他列来定义排序。表格本身没有内在的顺序。 -
@Ven 是的,我愿意。我已经更新了我的问题,以包括我忘记的小组。我包括有,因为我可以有 1 个或只有 2 个 id,我只想要有 3 个的,或者 in 子句中有很多。
标签: sql sql-server junction-table