【问题标题】: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?

标签: mysql sql oracle subquery


【解决方案1】:

你的数据结构很差。您应该修复数据,使其每个fk 和每个value 都有一行。在单个列中存储多个值不是 SQL 存储数据的方式。

也就是说,您可以使用likejoin 做您想做的事情。 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 提供了类似的功能,但功能不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2021-07-05
    相关资源
    最近更新 更多