2017-02-13 19 views
1

Можно ли возвращать все строки на основе состояния? Пример:Вернуть строки найденного и не найдено

SELECT 
* 
FROM 
TABLE 
WHERE 
USER IN ('A', 'B', 'C') 

В приведенном выше примере это будет возвращать только если есть пользователь А, В и С. Если пользователь С не существует, то он будет возвращать только 2 строки, А и В. Я хотел бы иметь 3 строки, а C - пустой.

Спасибо.

+0

У КТР для возврата, строки B и C. Внешнее соединение с этим cte. – jarlh

ответ

1

Вы можете использовать этот

SELECT 
    t1.[user], 
    t.* 
FROM 
(
    SELECT 'A' [user] 
    UNION ALL 
    SELECT 'B' 
    UNION ALL 
    SELECT 'C' 
) t1  
LEFT JOIN 
    table_name t 
ON t.[user] = t1.[user]; 
+0

Спасибо за обмен. – Khrys

2

Вы можете воспользоваться СЛЕВА присоединиться здесь ..

WITH cte AS 
(SELECT 'a' AS user UNION ALL 
SELECT 'b' 
    SELECT 'c' 
) 
SELECT * FROM cte 
LEFT JOIN tablename ON yourcolumnName = user 
+0

Спасибо за обмен. – Khrys