2011-06-16 41 views
2

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

回答

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) 
+0

这对我有用,谢谢。 – Campfire 2011-06-16 11:46:43

1

一种非常原始,低效的,但简单的方法:

select ... from a, b 
where instr(','||b.csvcol||',', ','||a.pk||',') > 0;