以下命令在给定的数据库模式中获取所有外键查询,但它也会响应某些重复的外键,因此请告诉我一个人如何克服此问题的方法,并举例说明不同的选择。

    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;

最佳答案

在没有看到您的数据的情况下,这个答案有些投机。如果问题在于给定的模式名称可以具有相同的DropQuery值,并且该值多次作为CSV输出出现,那么我们可以尝试将GROUP_CONCATDISTINCT一起使用:

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

关于mysql - 使用group_concat mysql查询时如何停止重复结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52435737/

10-16 08:24