mysql : workaround for if() returning >1 row

标签 mysql

有这个 where 子句:

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

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

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

最佳答案

您可以在 where 子句中执行此操作

WHERE (ISNULL(?) OR xy.id IN (SELECT x.id FROM x WHERE name IN (?)))

关于mysql : workaround for if() returning >1 row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092239/

相关文章:

php - 在php中的数组开头插入值

mysql - 高效选择按列分组的最新行

mysql - 使用 k8s StatefulSet 配置 MySQL 复制

PHP如何保护数据库中的信息

mysql - 无法在 FROM 子句中指定要更新的目标表 t4

php - 使用设置参数选择 'random' 结果

mysql - 在 WordPress 上连接数据库时出现问题

PHP - 错误的用户名/密码 - 如何正确回显

java - 使用java迭代数据花费太长时间

mysql - 类似 IDE 的系统 - 用于存储的数据库或文件系统