나는이 링크에서, 이것에 대한 바이올린을 만든 존재하는 경우 : http://www.sqlfiddle.com/#!2/7e007선택 값은
나는이 MySQL의에서 그래서 SQL 소형/CE를 찾아 could'nt.
표는 내가 두 테이블에서 선택하고자하는이
Records Clients
ID | NAME | AGE ID | NAME
------------------ ----------------
1 | John | 20 1 | John
2 | Steven | 30 2 | Daniel
3 | Abraham | 30 3 |
4 | Donald | 25 5 | Lisa
6 | | 35 6 | Michael
7 | | 42 7 |
처럼 보이는, 그리고 ID가 두 테이블에 모두가 이름을 가지고 있다면이 기본으로 "고객"에서 이름을 싶습니다 . 레코드 이름이 비어 있으면 클라이언트 이름 (있는 경우)을 사용하고 Clients.Name이 비어 있으면 사용하십시오. records.Name을 사용하십시오.
위의 표에서, 나는이를 좋아하는 것 :
ID | NAME | AGE
------------------
1 | John | 20
2 | Daniel | 30
3 | Abraham | 30
4 | Donald | 25
5 | Lisa |
6 | Michael | 35
7 | | 42
를 내가 SQL 컴팩트에서이 작업을 수행하려면 어떻게합니까?
편집 :
ID | NAME | AGE
------------------
1 | John | 20
2 | Daniel | 30
3 | Abraham | 30
4 | Donald | 25
5 | Lisa |
6 | | 35
7 | | 42
"마이클"
SELECT t.id, t.name, t.age FROM
(
(
SELECT r.id,
CASE WHEN r.name = NULL THEN c.name ELSE r.name END as name,
r.age
FROM Records r
LEFT JOIN Clients c ON c.id = r.id
)
UNION
(
SELECT c.id, c.name, null as age FROM Clients c where c.id NOT IN (select id from Records)
)
) as t ORDER BY t.id
이 나에게이 출력을 제공 : 내가 거의 작동이 쿼리, 마련하는 데 성공했습니다 아래에 큰 응답에 감사합니다 (# 6에 있어야 함)이 누락되었습니다. 왜?!
이 부분을 다음과 같이 사용하십시오.'CASE WHEN c.name <> '' ' –
@BrokenHeart ღ도 이와 같은 결과를 보았습니다. "c.name이 null이 아닌 경우 c.name을 사용하고 else.r.name을 사용하십시오". "Michael"이 (가) 누락되었습니다. 정말 혼란 스럽습니다. – gubbfett
@BrokenHeart ღ 죄송합니다! 너는 완전히 옳았다. <> 널 (실제로 게시물이 null 인 경우에도) NULL이 잘못되었지만 <> ''로 변경하면 NULL이 작동했습니다. 나는 너의 대답을 믿음으로 줄 것이다. 고마워! – gubbfett