Как вы можете устранить перестановки между столбцами в MySQL - PullRequest
0 голосов
/ 13 октября 2011

у меня есть столбцы таблицы один (idprocess), указывают на столбцы два (idporcess1) и указывают на дерево столбцов (idprocess2).

id    idprocess        idporcess1    idprocess2
1      15                  16          17                  <==  A
2      15                  16          19                  <==  B
3      15                  20          23
4      14                  16          17
6      16                  15          80                  <== C
7      17                  15           49                 <== D
8      23                  16           20                 <== E    

Мне нужен SQL-запрос, который возвращает это: строка c и строка Dто же самое с числом idprocess (16) и idprocess (17)

, потому что строка c: idprocess (16) снова ссылается на ipdprocess1 (15), поскольку строка c: idprocess (17) ссылается на agin ipdprocess1 (15)

пожалуйста, помогите, я хочу, чтобы только завершить круговую ссылку в дереве

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Если вы счастливы найти строки, в которых первые два столбца переставлены, это сделает работу:

SELECT *
  FROM my_tbl t
 WHERE EXISTS (SELECT 1 FROM my_tbl t1 WHERE t1.idprocess = t.idprocess1 AND t1.idprocess1 = t.idprocess)
 ORDER BY t.id;

Альтернативная интерпретация:
Если вы хотите, чтобы все строки были idprocess1 был указан в idprocess раньше (перед = меньший идентификатор), тогда вы можете:

SELECT *
  FROM my_tbl t
 WHERE EXISTS (SELECT 1 FROM my_tbl t1 WHERE t1.id < t.id AND t1.idprocess = t.idprocess1)
 ORDER BY t.id;

Вы бы не назвали эту «перестановку».

0 голосов
/ 08 апреля 2013

Вопрос немного двусмысленный, но я попытался понять его самостоятельно и подготовил следующий запрос:

SELECT * 
FROM TEMP
where C2 IN ( Select C2 FROM TEMP group by C2 having count(C2) > 1 )
OR C3 IN ( Select C3 FROM TEMP group by C3 having count(C3) > 1 ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...