Преобразование запросов SQL Intersect с помощью операции самостоятельного соединения - PullRequest
0 голосов
/ 02 июля 2018

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

SELECT id,Name FROM AJOT WHERE MARY =1 
INTERSECT
SELECT id,Name FROM AJOT WHERE MARY =10 

А мои запросы на самостоятельное СОЕДИНЕНИЕ следующие:

Select a.id,b.Name
FROM AJOT a join AJOT b 
on a.MARY=1 AND b.MARY=10

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Один метод использует агрегацию:

SELECT Name
FROM AJOT
WHERE MARY IN (1, 10)
GROUP BY Name
HAVING COUNT(*) = 2;  -- Assumes not duplicates

Я предполагаю, что id является уникальным в строках. Если он связан с name, то включите его в SELECT и GROUP BY.

0 голосов
/ 02 июля 2018

Вам необходимо объединить все атрибуты, которые должны иметь оба подмножества, и явно использовать DISTINCT для устранения дубликатов.

SELECT DISTINCT
       a.id,
       b.name
       FROM ajot a
            INNER JOIN ajot b 
                       ON a.id = b.id
                          AND a.name = b.name
       WHERE a.mary = 1
             AND b.mary = 10;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...