San*_*mas 2 sql sql-server sql-server-2008
我像这样基准测试表
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
---------------------------------------------
Run Code Online (Sandbox Code Playgroud)
稍微解释一下表
这里TestID和连接的TestID正在扮演角色.如果用户想要TestID 3的所有基准测试
它应该返回testID = 3的行以及任何具有connectedTestID列的行,其中包含逗号分隔值中的testID
这意味着如果用户将值3指定为testID,则应返回
---------------------------------------------
8 3 My BM8 7,10
7 5 My BM7 8,3,12,9
6 10 My BM6 3,6
--------------------------------------------
Run Code Online (Sandbox Code Playgroud)
希望清楚这三行是如何返回的.意味着第一行是因为testID 3在那里.另外两行因为3在其connectedIDs单元格中
您应该修复数据结构.在逗号分隔的列表中存储数字ID是一个坏的,坏的,坏主意:
当您正在探索联结表是什么,以便您可以解决数据结构的问题时,您可以使用如下查询:
where testid = 3 or
',' + ConnectedTestID + ',' like '%,3,%'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |