Как остановить дубликаты результатов при использовании запроса mysql group_concat - PullRequest
0 голосов
/ 21 сентября 2018

следующие команды получают все запросы внешнего ключа в заданной схеме базы данных, но они также отвечают на некоторые дубликаты внешнего ключа, поэтому, пожалуйста, скажите мне, кто-то, как преодолеть эту проблему, и, пожалуйста, приведите пример отдельной опции.

    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;

1 Ответ

0 голосов
/ 21 сентября 2018

Не видя ваших данных, этот ответ несколько умозрительный.Если проблема заключается в том, что данное имя схемы может иметь одно и то же значение DropQuery, появляющееся более одного раза в качестве выходного сигнала CSV, тогда мы можем попробовать использовать GROUP_CONCAT с DISTINCT:

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