presence
在上面的查询中,我想添加此select *
from Table1
full join Table2 on Table2.Common = Table1.Common
条件:
where
where (Table1.StatusId > 100 or Table1.StatusId is not null)
的数据类型为StatusId
。
问题是,当我使用numeric(18, 2)
条件时,where
中Table2
中没有任何连接数据的行不再显示。
还有其他方法可以添加此Table1
条件吗?
答案 0 :(得分:2)
尝试将其放在Subquery上。
SELECT *
FROM ( SELECT *
FROM Table1
WHERE ( Table1.StatusId > 100
OR Table1.StatusId IS NOT NULL
)
) T
FULL JOIN Table2 ON Table2.Common = t.Common
答案 1 :(得分:1)
将t1.StatusId is NOT NULL
过滤器移至ON
条件
SELECT *
FROM Table1 t1
FULL JOIN Table2 t2
ON t1.Common = t1.Common
AND t1.StatusId is NOT NULL
您的查询中的问题是,在table1
状态列中,将显示非匹配记录NULL
值,这些值将通过应用Where条件Where t1.StatusId is NOT NULL
进行过滤。因此,将其移至ON
子句,该子句告知要连接的记录是什么,而不是过滤结果
答案 2 :(得分:0)
您只需在ON-Statement
之后添加AND (Table1.StatusId > 100 or Table1.StatusId is not null)
即可
答案 3 :(得分:0)
select *
from Table2
Full join Table1 on Table2.Common = Table1.Common
where (Table2.StatusId > 100 or Table2.StatusId is not null)
答案 4 :(得分:0)
如果要将where条件应用于连接条件的结果,则
选择* 来自表1 表2上的完全连接Table2.Common = Table1.Common其中Table1.StatusId> 100或Table1.StatusId不为空
由于你的条件(Table1.StatusId不为空),这个结果可能没有表2中没有来自Table1的连接数据的数据。
如果您希望仅对Table1的已过滤记录执行条件,则
从Table2中选择*完全连接(从Table1中选择*,其中StatusId> 100或StatusId不为空)T on Table2.Common = T.Common