使用groupconcat mysql查询时如何阻止重复结果

vd2z7a6w  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(361)

下面的命令获取给定数据库模式中的所有外键查询,但它也响应一些重复的外键,所以请告诉我,有人,如何克服这个问题,并请给出一个独特选项的示例。

SELECT SchemaName, GROUP_CONCAT(DropQuery SEPARATOR ';\n') as DropQuery
  FROM
  (SELECT 
  KCU.REFERENCED_TABLE_SCHEMA as SchemaName,    
KCU.TABLE_NAME,
KCU.COLUMN_NAME,
CONCAT('ALTER TABLE ', KCU.TABLE_NAME, ' DROP FOREIGN KEY ', KCU.CONSTRAINT_NAME) AS DropQuery 
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU, information_schema.REFERENTIAL_CONSTRAINTS RC
WHERE
KCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
AND KCU.REFERENCED_TABLE_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA
AND KCU.REFERENCED_TABLE_SCHEMA = 'jtrac') Queries
GROUP BY SchemaName;
jvlzgdj9

jvlzgdj91#

在没有看到你的数据的情况下,这个答案有点推测性。如果问题是给定的模式名可以具有相同的 DropQuery 值作为csv输出出现多次,然后我们可以尝试使用 GROUP_CONCATDISTINCT :

SELECT
    SchemaName,
    GROUP_CONCAT(DISTINCT DropQuery SEPARATOR ';\n') AS DropQuery
FROM
(
    -- your subquery
) Queries
GROUP BY SchemaName;

相关问题