2011-08-04 47 views
1

我有下面的查询,当查找表中有东西的时候工作。但是,如果“z.a”不等于INSERT失败的任何内容。为什么会这样?MySQL插入与空值查找

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

外部插入查询将插入select返回的任何内容 - 如果它不返回任何内容,那么插入的内容是什么?这是预期的行为。其他任何事情都会变得疯狂 - 如果没有可供插入的东西,应该插入什么?插入查询是否构成数据?

+0

那么目的是数据已经存在,但我想覆盖查找表中的值,如果有什么,因此使用合并 –

+0

尝试运行选择查询本身...它'什么都不会返回。直到你可以将它按摩到它返回的东西的格式,插入查询基本上是无用的绒毛。 –

+0

那么我知道查询什么也没有返回,这是一个更大的循环的一部分,我刚刚发现了这个!这有效,当有值,但没有值时,我希望它使用其他值,如“A555” –