我有桌子1& 2
表1:
+-----+----+-------------------+
| pk | id | description |
+-----+----+-------------------+
| pk1 | d1 | description one |
| pk2 | d2 | description two |
| pk3 | d3 | description three |
+-----+----+-------------------+
表2:
+-----+----------+
| FK | values |
+-----+----------+
| pk1 | d1 |
| pk2 | d1,d2 |
| pk3 | d1,d2,d3 |
+-----+----------+
我必须从table1和table2获得以下输出
+-----+---------------------------------------------------+
| FK | values |
+-----+---------------------------------------------------+
| pk1 | description one |
| pk2 | description one,description two |
| pk3 | description one,description two,description three |
+-----+---------------------------------------------------+
答案 0 :(得分:3)
您的数据结构非常糟糕。您应该修复数据,使其每fk
和每value
有一行。在单个列中存储多个值不是存储数据的SQL方法。
也就是说,您可以使用like
和join
执行您想要的操作。 MySQL代码如下所示:
select t2.fk, group_concat(t1.description order by t1.pk) as descriptions
from t2 join
t1
on find_in_set(t1.id, t2.values) > 0
group by t2.fk;
Oracle提供类似的功能,但功能不同。