“IN”运算符中的动态值

时间:2013-09-25 22:06:24

标签: mysql sql where-in

我有一个select语句,其中WHERE子句的IN运算符。只要将一些值传递给问号(从java程序传递),查询就可以正常工作。但是当没有传递值时,我会收到语法错误。

select
    this_.categoryAddressMapId as category1_1_0_,
    this_.categoryId as categoryId1_0_,
    this_.addressId as addressId1_0_
from
     icapcheckmyphotos.category_address_map this_ <br>
where
     this_.addressId in (
            ?
     )

当没有传递参数时,我需要空集。请建议如何修改where子句。提前致谢

3 个答案:

答案 0 :(得分:2)

修改你的java程序。如果没有addressIds,或者确保它至少传递一个值,则您的选择是不运行查询。如果addressId是整数字段,则传递-1或类似的东西。就个人而言,我喜欢第一个选项,但这取决于您的要求。

答案 1 :(得分:0)

如何做像

这样的事情
where (? is null) OR this_.addressId in ( ?  )

如果您的专栏确实接受了NULLS,您可能需要在OR的第一部分添加一些特殊处理

答案 2 :(得分:0)

//伪代码 ...

WHERE 1
if(!null) {
   AND this_.addressId in ('stuff')
}