列中有多个值的子查询[关闭]
Posted
技术标签:
【中文标题】列中有多个值的子查询[关闭]【英文标题】:Sub query having multiple values in column [closed] 【发布时间】:2018-03-29 03:45:29 【问题描述】:我有表 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 |
+-----+---------------------------------------------------+
【问题讨论】:
你使用的dbms是mysql还是Oracle? 【参考方案1】:你的数据结构很差。您应该修复数据,使其每个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 提供了类似的功能,但功能不同。
【讨论】:
以上是关于列中有多个值的子查询[关闭]的主要内容,如果未能解决你的问题,请参考以下文章