ПРИСОЕДИНЯЙТЕСЬ К ДВУМ SQL-запросам в MS SQL - PullRequest
0 голосов
/ 28 мая 2019

Мне нужна помощь в объединении двух запросов:

Первый:

SELECT TITLE, 
       count(TITLE) as DUPLICATES 
FROM CONTENT
WHERE CONTENTTYPE = 'ATTACHMENT' GROUP BY TITLE having count(TITLE) > 1 

Второй просто

SELECT CONTENTID,
       TITLE 
FROM CONTENT

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

Ответы [ 3 ]

3 голосов
/ 28 мая 2019

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

WITH cte AS (
    SELECT *, COUNT(*) OVER (PARTITION BY TITLE) cnt
    FROM CONTENT
    WHERE CONTENTTYPE = 'ATTACHMENT'
)

SELECT CONTENTID, TITLE
FROM cte
WHERE cnt > 1;

Этот подход использует COUNT в качестве аналитической функции для идентификации TITLE записей, соответствующих вашим требованиям.

1 голос
/ 28 мая 2019

Если вы хотите увидеть строки, связанные с дублирующими заголовками вложений, вы можете использовать оконные функции:

SELECT c.*  -- or whatever columns you want
FROM (SELECT c.*, COUNT(*) OVER (PARTITION BY TITLE) as cnt
      FROM CONTENT c
      WHERE CONTENTTYPE = 'ATTACHMENT'
     ) c
WHERE cnt >= 2;
0 голосов
/ 28 мая 2019
SELECT min(CONTENTID) as CONTENTID, TITLE, count(TITLE) as DUPLICATES
FROM CONTENT 
WHERE CONTENTTYPE = 'ATTACHMENT'
GROUP BY TITLE
HAVING count(TITLE) > 1 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...