Mysql:if()返回> 1行的解决方法

时间:2012-10-26 18:16:16

标签: mysql

有这个where子句:

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

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

我需要这种类型的isnull检查,因为如果发送的数据为null,我希望子句始终返回true。基本上如果data为null子句将是1 IN 1,如果它不为null找到corespondent id,但if()函数限制我只返回1个结果(不是一组)。我在这里有什么选项除了在php中动态构建整个查询?

1 个答案:

答案 0 :(得分:1)

您可以在where子句

中执行此操作
WHERE (ISNULL(?) OR xy.id IN (SELECT x.id FROM x WHERE name IN (?)))