在update语句中部分忽略Where子句

时间:2013-03-20 18:01:52

标签: mysql sql-update

我在客户端使用此查询从几个表创建搜索字段。

update xcart.xcart_products_lng_en
left join xcart.xcart_products on xcart.xcart_products.productid = xcart.xcart_products_lng_en.productid
left join xcart.xcart_extra_field_values on xcart.xcart_extra_field_values.productid = xcart.xcart_products.productid 

 set xcart.xcart_products_lng_en.keywords =  CONCAT(product , " ", productcode, " ",
        (select group_concat(xcart.xcart_extra_field_values.value 
        order by `xcart`.`xcart_extra_field_values`.`productid` 
        separator " ") 
    from xcart.xcart_extra_field_values 
    where xcart.xcart_extra_field_values.productid = xcart.xcart_products_lng_en.productid )) 
where value is not null or value not like ''

这可以按预期工作,但是当它的值太多时太松了,所以我添加了

    fieldid != 11 or fieldid != 10 or fieldid != 12 or fieldid != 18 or fieldid != 19 or
fieldid != 20
    or fieldid != 15 or fieldid != 3 or fieldid != 16 

但这会被忽略。有什么我公然错过的吗?

1 个答案:

答案 0 :(得分:2)

您应该使用and

where value is not null or value not like ''

这不会过滤任何内容,因为任何值都会通过or或另一侧的一侧。 null值将通过右侧,因为它不像''''将通过左侧,因为它不是空的。