Mem*_*pan 5 mysql syntax union group-concat
我遇到了在这种情况下使用UNION和GROUP_CONCAT的正确语法的问题:
我有4张桌子:
'base'表中的记录可以通过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'
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我可以使用两个VIEWS,第一个使用上面的代码,名称为'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
Run Code Online (Sandbox Code Playgroud)
现在的问题是¿如何在一个视图中加入这两个视图?
小智 10
您可以使用查询中的派生表.接下来是一个如何使用它们的示例.
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
Run Code Online (Sandbox Code Playgroud)
基本上,您可以将任何SELECT查询用作别名表.然后,您可以将所需的任何聚合函数应用于该别名查询.