我像这样基准测试表
BMID TestID BMTitle ConnectedTestID
---------------------------------------------------
1 5 My BM1 0
2 6 My BM2 5
3 7 My BM3 5,6
4 8 My BM4 10,12,8
5 9 My BM5 0
6 10 My BM6 3,6
7 5 My BM7 8,3,12,9
8 3 My BM8 7,10
9 8 My BM9 0
10 12 My BM10 9
---------------------------------------------
稍微解释一下表
这里TestID和连接的TestID正在扮演角色。如果用户想要TestID 3的所有基准
它应该返回testID = 3的行以及任何具有connectTestID列的行,其中包含逗号分隔值中的testID
这意味着如果用户将值3指定为testID,则应返回
---------------------------------------------
8 3 My BM8 7,10
7 5 My BM7 8,3,12,9
6 10 My BM6 3,6
--------------------------------------------
希望清楚这三行是如何返回的。意味着第一行是因为testID 3在那里。另外两行因为3在其connectedIDs单元格中
答案 0 :(得分:5)
您应该修复数据结构。在逗号分隔的列表中存储数字ID是一个坏的,坏的,坏主意:
在探索联结表的内容时,您可以解决数据结构的问题,可以使用如下查询:
where testid = 3 or
',' + ConnectedTestID + ',' like '%,3,%'