我的问题是,如果我有2个表和3个条件,则在表1中我必须检查2个条件,在表2中,我必须仅检查1个条件,但也将表2中的另一个原始值与表1进行比较。
SELECT CUSTOMER_ID FROM Table1 WHERE Column_name1 = 'condition1' or Column_name2 = 'Condition2';
SELECT CUSTOMER_ID FROM Table2 WHERE Column_name3 IS NOT NULL;
所以我试图从这个2中创建1个sql代码,因此它将检查两个表并返回至少有一个条件为真的值。它应该显示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;
但我在这个领域很新,我们可以说,我真的不明白为什么它不起作用。
如果任何TABLES中的任何条件都为真,那么期望的结果应该是它返回CUSTOMER_ID但是可能会发生一个CUSTOMER不仅得到一个为真但可能所有条件都是真的,所以我需要只列出一次客户的ID。
如果我要提供更多说明,请告诉我。
提前感谢您的帮助。
答案 0 :(得分:1)
问题不是很清楚,但看起来你需要:
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
返回所有结果时,union all
将仅返回唯一结果。
答案 1 :(得分:0)
去吧:
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