Как отличить результат в запросе выбора SQL VIEW с помощью JOIN? - PullRequest
1 голос
/ 13 января 2012

У меня есть представление с запросом выбора с объединением.

SELECT
 t.a, 
 t.b,
 (SELECT CASE WHEN t2.field IS NULL THEN 0 ELSE 1 END AS Expr1) AS C
FROM table1 t1
LEFT JOIN table2 t2 on t2.link = t1.link

Если в таблице 2 имеется более 1 записи с одной и той же ссылкой, я получаю дублированные записи.

Как правильно определить результат?Существует ли тип JOIN, который не будет возвращать весь результат, а только одну строку?

Спасибо

Ответы [ 3 ]

6 голосов
/ 13 января 2012
select distinct t.a, t.b ...

должен устранить дубликаты.

1 голос
/ 13 января 2012
SELECT
    t.a, 
    t.b,
    CASE WHEN EXISTS (SELECT * FROM table2 t2 WHERE t2.link = t1.link) 
           THEN 1 
           ELSE 0
    END AS c
FROM table1 t1
1 голос
/ 13 января 2012

Если они действительно дубликаты, если вы используете отличные, они удаляются:

SELECT
 distinct
 t.a, 
 t.b,
 (SELECT CASE WHEN t2.field IS NULL THEN 0 ELSE 1 END AS Expr1) AS C
FROM table1 t1
LEFT JOIN table2 t2 on t2.link = t1.link
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...