2011-08-04 2 views
1

조회 테이블에 내용이있을 때 작동하는 다음 조회가 있습니다. 그러나 "z.a"가 아무 것도 아닌 경우 INSERT가 실패합니다. 왜 이럴 수 있니?null 일 때 조회가있는 MySQL INSERT

INSERT INTO dataTable(
    a, 
    b, 
    c, 
    d, 
    e, 
    f, 
    g, 
    h, 
    i, 
    j, 
    k, 
    l, 
    m, 
    n, 
    o, 
    p 
)SELECT 
    '000003', 
    COALESCE(z.Registration, 'REG6'), 
    'PFTEST', 
    '1', 
    '1', 
    '37000.0', 
    '148.0', 
    '439.8', 
    '1312475688', 
    '0', 
    '54', 
    COALESCE(z.TypeCode, 'A555'), 
    '', 
    '1173', 
    '0', 
    'nJ' 
FROM 
    LookupTable z 
WHERE 
    z.a = '000003' 

답변

1

결국 나는 WHERE를 완전히 제거하고 VALUES 내에서 직접 선택을 수행했습니다. 아주 잘 작동합니다

1

외부 삽입 쿼리는 선택 항목이 반환하는 항목을 삽입합니다. 아무 것도 반환하지 않으면 삽입 할 항목은 무엇입니까? 이는 예상되는 동작입니다. 다른 것은 미친 짓입니다. 삽입 할 수있는 것이 아무것도 없다면 무엇을 삽입해야합니까? 삽입 쿼리가 데이터를 구성해야합니까?

+0

글쎄 그 목적은 데이터가 이미 있지만 거기에 무언가가 있다면 Lookup 테이블의 값을 덮어 쓰고 싶습니다. 따라서 Coalesce를 사용합니다 –

+0

그 자체로 선택 쿼리를 실행 해 봅니다. 아무것도 돌려주지 않을 것이다. 당신이 그것을 반환하는 형식으로 그것을 마사지 할 수있을 때까지, 삽입 쿼리는 기본적으로 쓸모가 없다. –

+0

글쎄, 쿼리가 아무것도 반환하지 않는다는 것을 알고 있습니다. 이것은 더 큰 루프의 일부이며 방금 이것을 발견했습니다! 이것은 값이있을 때 작동하지만 값이 없으면 "A555"와 같은 다른 값을 사용하려고합니다. –

관련 문제