0

有这个 where 子句:

第一个和第二个占位符?可以有值:1 || NULL
第三个占位符是动态添加的(数组)

IF(ISNULL(?),1,xy.id) IN 
     (IF(ISNULL(?),1,(SELECT x.id FROM x WHERE name IN (?))))   

我需要这种类型的 isnull 检查,因为如果发送的数据为空,我希望该子句始终返回 true。基本上,如果数据为空子句1 IN 1,如果它不为空,则找到对应的 ID,但if()函数限制我只返回 1 个结果(不是一组)。除了在 php 中动态构建整个查询之外,我还有哪些选项?

4

1 回答 1

1

您可以在您的where条款中执行此操作

WHERE (ISNULL(?) OR xy.id IN (SELECT x.id FROM x WHERE name IN (?)))
于 2012-10-26T18:32:39.373 回答