gpt4 book ai didi

mysql - 如何一起使用 UNION 和 GROUP_CONCAT

转载 作者:可可西里 更新时间:2023-11-01 07:01:41 25 4
gpt4 key购买 nike

我对在这种情况下使用 UNION 和 GROUP_CONCAT 的正确语法有疑问:

我有 4 个表:

  • base:是有很多列的主表。
  • mm:是一个 mm 表,它使用“表名”字段指向接下来的两个表。
  • 存储相关数据的t1和t2。

'基'表中的记录可以通过 mm 表在 t1 和 t2 中有许多相关记录。

我正在 MySQL 中创建一个 VIEW,我需要所有这些相关记录都显示在以逗号分隔的单个列中。

这是基本的 MySQL 代码:

SELECT base.uid, t1.nombre_es
FROM base
INNER JOIN mm
ON mm.uid_local=base.uid
INNER JOIN t1
ON mm.uid_foreign=t1.uid WHERE mm.tablenames = 't1'

UNION

SELECT base.uid, t2.nombre_es
FROM base
INNER JOIN mm
ON mm.uid_local=base.uid
INNER JOIN t2
ON mm.uid_foreign=t2.uid WHERE mm.tablenames = 't2'

提前致谢。


我可以使用两个 View 来完成,第一个使用上面的代码,名称为“viewtest”,第二个使用以下代码:

SELECT base.uid,
GROUP_CONCAT(DISTINCT vi.nombre_es ORDER BY vi.nombre_es SEPARATOR ',') as nombre

FROM base

INNER JOIN viewtest as vi
ON vi.uid=base.uid

GROUP BY uid

现在的问题是“如何将这两个 View 合并到一个 View 中?”

最佳答案

您可以使用来自查询的派生表。接下来是如何使用它们的示例。

SELECT GROUP_CONCAT( f ) 
FROM (
SELECT 1 AS f # <-- QUERY #1
UNION
SELECT 2 AS f # <-- QUERY #2
UNION
SELECT 3 AS f # <-- QUERY #3
) AS T

基本上,您可以将任何 SELECT 查询用作别名表。然后,您可以将所需的任何聚合函数应用于该别名查询。

关于mysql - 如何一起使用 UNION 和 GROUP_CONCAT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7097068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com