Найти и показать все уникальные идентификаторы, где записи во втором столбце повторяются - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь найти идентификаторы, где для этого идентификатора все записи во втором столбце являются дубликатами и существуют под одним или несколькими другими идентификаторами.Это означает, что я не просто ищу, имеет ли (id2) => 2.

Если это вход.

id   id2    
 1    44          
 1    44      
 1    44      
 2    44      
 2    44          
 2    44    
 2    44
 2    46    
 3    42      
 3    44          
 3    44          
 4    55    
 4    55          
 4    55          
 4    55          

Выход должен быть:

id   id2    
 1    44          
 1    44      
 1    44      

Поскольку все записи в id2 также существуют в id # 2.Идентификатор # 3 отсутствует в выходных данных, поскольку только некоторые записи соответствуют другому идентификатору, выходные данные должны давать только те записи, в которых все записи id2 соответствуют другому, независимо от того, сколько записей в нем есть.

Я используюMySQL Workbench.

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Один метод состоит в подсчете количества уникальных идентификаторов для каждого id2.Если вас устраивают только значения id:

select t.id
from t join
     (select id2, count(distinct id) as numids
      from t
      group by id2
     ) t2
     on t.id2 = t2.id2
group by t.id
having min(numids) > 1;

Я не уверен, каково значение получения исходных значений.Простой способ получить их - добавить group_concat(id2) к внешнему select.

Если вы имеете в виду, что все значения id2 для id одинаковы и отображаются с другими идентификаторами, затем добавьте having count(distinct id2) к предложению having.

0 голосов
/ 15 октября 2018

Попробуйте следующий запрос:

SELECT * FROM table_name WHERE id 
IN(SELECT id FROM (SELECT * FROM table_name GROUP BY id,id2)a
GROUP BY id HAVING COUNT(id)=1);
0 голосов
/ 12 октября 2018

Использовать коррелированный подзапрос

select * from table1 as t1 
where exists (select 1 from table2 as t2 where t1.id=t2.id group by id2 having count(distinct id)>=2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...