2011-02-25 93 views
1

我有一个字段X的表A,其中包含一个值列表,如1,2,3 然后是第二个表B,字段为uid。 如果AX包含1,2,3我想从表B,其中uid是1或2或3从连接表中选择多行

我尝试了加入像行:

SELECT b.value FROM A a JOIN B b ON b.uid IN (a.X) 

这有点儿工作,但只有我当然得到1的结果在b.value。我如何获得所有结果?我知道我可以使用第二个查询,但它可以在一个?

(我知道这是不是很好用这样的结构,应该使用N-N的表,但是这是由所使用的系统给定的)

回答

1

正如你在你的问题说明,这不是一个好的设计。我认为有以下应该工作(虽然不是性能良好)

SELECT b.value 
FROM A a 
JOIN B b ON CONCAT(',',a.X,',') LIKE CONCAT('%,',b.uid,',%') 
+0

该多好啊这部作品,即时通讯不知道这是否是更好地使用这个或只是一个第二个查询。我从数据库中获得大量的数据(我选择了比这个更多的值),唯一的区别是字段b.value。 – Flo 2011-02-25 14:34:02