mysql - 如何一起使用 UNION 和 GROUP_CONCAT

标签 mysql syntax union group-concat

我对在这种情况下使用 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/

相关文章:

sql-server - SQL Server : multiple queries or UNION

mysql - 使用 SUM 查询

PHP include doc 不获取 $_GET 变量

MySQL 挑选出多行

r - 如何使用 R 中的 party 包修复 ctree 函数中的 "invalid type (NULL) for variable"错误?

mysql - 在 MySql 中使用一个或多个 View 创建 UNION

mysql - 在此查询中获取数据计数的更好方法?

mysql - 如何更改我的 MySQL 查询或表布局以使用索引

c - 在此 C 程序中返回结构时出错的原因是什么?

java - Eclipse编辑器代码编辑