我必须在数据库系统中进行研究,其中1:n关系的外键在单个列中以逗号分隔列表的形式存储。我想做一个查询,打印出表A中的每一行,其中主键在表B的某一列中找到,但我只是不知道怎么做。使用的数据库是oracle 10,如果有帮助的话。
答案 0 :(得分:1)
一种非常粗糙,低效但简单的方式:
select ... from a, b
where instr(','||b.csvcol||',', ','||a.pk||',') > 0;
答案 1 :(得分:1)
您想使用INSTR功能。
Select A.*
FROM Foo A
Where A.ID IN
(SELECT A.ID FROM Bar B
Where INSTR(','||B.ConcatKeyField||',', ','||A.ID||`,', 1, 1) > 0)