基于几个表格和条件的SQL语句

问题描述:

我的问题是,如果我有两个表格和三个条件,在Table1中,我必须检查两个条件,在表2中,我只需检查一个条件,但比较Table2中的另一个原始值以Table1为例。基于几个表格和条件的SQL语句

SELECT CUSTOMER_ID FROM Table1 WHERE Column_name1 = 'condition1' or Column_name2 = 'Condition2'; 
SELECT CUSTOMER_ID FROM Table2 WHERE Column_name3 IS NOT NULL; 

所以我试图创造1个SQL代码出这个2的,所以它会检查表和返回值,其中至少一个条件将是真实的。它应该显示CUSTOMER_ID表的值。

我已经试过这样的事情

SELECT CUSTOMER_ID 
FROM Table1 
WHERE Column_name1 = 'condition1' or Column_name2 = 'condition2' 
INNER JOIN Table2 
ON Column_name3 IS NOT NULL 
WHERE Table1.CUSTOMER_ID=Table2.CUSTOMER_ID; 

,但我很新的在这一领域让我们说,我真的不明白为什么它不工作。

期望的结果应该是,如果任何一个条件都是真的,那么它将返回CUSTOMER_ID,但可能发生的一个CUSTOMER不仅有一个是真实的,但也许所有的条件都是真的,所以我只需要列出一次客户的ID。

如果我应该给予更多的澄清,请让我知道。

感谢您提前给予的帮助。

+1

在文档中查找'union'。 –

+0

你的问题并不完全清楚。不要用_describing_你的问题,_show us_样品表数据和预期的输出。 –

+0

ON用于连接条件,即Table1.CUSTOMER_ID = Table2.CUSTOMER_ID。 WHERE用于“过滤”,例如NOT NULL条件。 – jarlh

问题不是很清楚,但它看起来你需要:

SELECT CUSTOMER_ID FROM Table1 
    WHERE Column_name1 = 'condition1' or Column_name2 = 'Condition2' 
union 
SELECT CUSTOMER_ID FROM Table2 
    WHERE Column_name3 IS NOT NULL; 

join是用来当你需要从两个(或更多)创建一个结果行来自不同表格的来源行。
union用于需要获取多个查询结果的总和时。当union all返回所有结果时,union将仅返回唯一结果。

转到此:

SELECT CUSTOMER_ID 
FROM Table1 
LEFT JOIN Table2 
    On Table1.CUSTOMER_ID=Table2.CUSTOMER_ID; 
WHERE Column_name1 = 'condition1' or Column_name2 = 'Condition2' or Column_name3 IS NOT NULL