у меня есть два отдельных запросов, которые в значительной степени возвращают то же самое:осталось объединить два отдельных запросов
select id
from t
where id<>''
GROUP BY id
having count(*) >= 2;
select id
from t2
where id is not null
GROUP BY id
having count(*) >= 2
ORDER BY id ASC;
список идентификаторов, значения более одного раза. Первый запрос возвращает больше второго. Поэтому мне нужно как-то оставить их, чтобы получить результаты, которые находятся в первом запросе, но не во втором. Я попытался сделать левое соединение, но он работает неправильно.
Я также попытался следующие без толку:
select id
from t
where id<>''
GROUP BY id
having count(*) >= 2
not in (select id from t2 where id is not null GROUP BY id having count(*) >= 2
ORDER BY id ASC)
Дополнительная информация
Запрос один дает мне все идентификаторы, которые имеют одинаковое значение для таблицы 1 и запрос 2 дает мне все те же значения для таблицы 2. Есть дополнительные gotchas, как есть некоторые пустые идентификаторы в таблице 1, в то время как в таблице 2 есть некоторые нули, следовательно, условия, исключающие пробелы для первого и nulls для последнего. Поэтому я возвращаю эти два отдельных результата, которые почти одинаковы, кроме как в результатах 1 имеются утверждения, что arent в результатах 2 , но только при выполнении этих запросов, поскольку они дублируются в таблице 1, но не в таблице 2. хотя они существуют в таблице 2. Таким образом, простое левое соединение, где t1.id <> t2.id не будет работать, потому что они существуют в t2.
Что вы * на самом деле хотите получить запрос? –
@ExplosionPills дают мне те, что были в моем первом запросе, которые не во втором. –