从单个列中的键列表中选择行

时间:2011-06-16 10:20:49

标签: sql oracle key

我必须在数据库系统中进行研究,其中1:n关系的外键在单个列中以逗号分隔列表的形式存储。我想做一个查询,打印出表A中的每一行,其中主键在表B的某一列中找到,但我只是不知道怎么做。使用的数据库是oracle 10,如果有帮助的话。

2 个答案:

答案 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)