我很困惑
我有一个查询,我必须得到一些客户值,将获得一些客户ID作为输入,它看起来像这样
SELECT * FROM CUTOMER WHERE CUTOMER_ID IN ('1','2');
但有时在这种情况下不会选择客户ID,必须返回所有行。
我在开始日期和结束日期之间也有类似的问题,有时会提供开始日期和结束日期,但有时当它们未被选中时我应该返回所有行
有人可以帮我处理案件吗?
提前致谢
答案 0 :(得分:0)
一种解决方案是使用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
左连接将返回第一个查询中的所有行,并且只返回第二个查询中具有匹配项的行,否则将返回空值。