【问题标题】:Returning list of values as text string in one column from sub query in MySQL从 MySQL 中的子查询返回一列中的值列表作为文本字符串
【发布时间】:2018-02-13 07:32:01
【问题描述】:

在 postgresql 中,它可以在一列中返回值,例如 - 逗号分隔列表,其中包括来自一个子选择的返回值 这在处理大量数据并试图避免多个子查询的情况下非常有用

SELECT a.key, a.transaction_id,
array_to_string(array(SELECT cast(lo.issue as text) FROM keys.key_list lo 
WHERE version_id = 2 AND lo.issue >= '2017-01-01' 
AND lo.key=a.key),\', \') as issue_dates
FROM public.orders a
WHERE a.type IN (2, 4)

在这种情况下,它会返回类似的数据

    key | transaction_id  | issue_dates

   aaa1 |   234234234     | 2017-01-01, 2017-06-05, 2018-01-02

是否可以在 MySQL 中做类似的事情?

【问题讨论】:

  • 您可以使用 group_concat 但我更喜欢在应用程序代码中进行这种操作

标签: mysql postgresql


【解决方案1】:
SELECT a.key, a.transaction_id,(SELECT GROUP_CONCAT(lo.issue) 
FROM keys.key_list lo WHERE version_id = 2 AND lo.issue >= '2017-01-01' 
AND lo.key=a.key) as issue_dates
FROM public.orders a
WHERE a.type IN (2, 4)

【讨论】:

    【解决方案2】:

    您可以使用 MySQL 中的 group_concat 函数将值列表聚合为字符串。您不需要为此编写子选择,左连接会很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 2021-09-24
      • 1970-01-01
      • 2019-12-17
      相关资源
      最近更新 更多