java - 当 IN 运算符和 BETWEEN 值为空时,如何使查询返回所有行

标签 java mysql

有点困惑

我有一个查询,我必须获取一些客户值,为此,将获取一些客户 ID 作为输入,它看起来像这样

SELECT * FROM CUTOMER WHERE CUTOMER_ID IN ('1','2');

但有时在这种情况下不会选择客户 ID,必须返回所有行。

我在开始日期和结束日期之间也遇到类似的问题,有时提供开始日期和结束日期,但有时当未选择它们时我应该返回所有行

有人可以帮我处理案件吗?

提前致谢

最佳答案

一种解决方案是使用 LEFT JOIN。首先,您必须编写一个查询来返回您正在搜索的所有值:

SELECT 1 AS CUSTOMER_ID
UNION ALL SELECT 2

(这可以是动态的)那么您可以使用 LEFT JOIN:

SELECT
  s.CUSTOMER_ID,
  c.*
FROM
  (SELECT 1 AS CUSTOMER_ID
   UNION ALL SELECT 2) s
  LEFT JOIN CUTOMER c
  ON s.CUSTOMER_ID = c.CUSTOMER_ID

左连接将返回第一个查询中的所有行,并且仅返回第二个查询中匹配的行,否则将返回 null。

关于java - 当 IN 运算符和 BETWEEN 值为空时,如何使查询返回所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37916692/

相关文章:

Java集合搜索

mysql - 在日期范围上使用 SUM 和 GROUP BY 时如何在空结果中返回零

php - 了解并跟踪 Apache 错误 : Wordpress database

php - 两个不同 SQL 查询的组合和排序结果

java - 如何使用 org.json.simple 解析没有根元素的 JSON 文件?

java - 为什么我会收到此编译器错误(使用枚举作为单例)?

java - 使用 URL 引用桌面

java - 遍历标签映射并处理它们

php - 在一行中显示具有重复用户 ID 的多条记录

php - 如何使用数据库值创建 4 个动态页面