这个问题是视图是空的,因为c4和c5可以是空值。
如果其中一个有值,我基本上希望c4和c5上的这两个后续内连接发生。
要彻底:
每个都在UTC和colNum之间的内部联接之前。我的意思是UTC和colNum连接总是发生。
我知道sql是一种查询语言,所以它不进行计算,但必须有一个过滤器,允许将这个逻辑应用于这两个表。
值得注意的是,如果c4存在,则c5为null,如果c5存在,则c4为null,并且如果两者都为null,我仍然需要一行(基于前两个内连接连接)。
同样,我真的不知道围绕SQL的语言,所以我在问一个问题之前找到答案的努力受到了阻碍。如果这样的事情已经得到解答,请指出我。
答案 0 :(得分:3)
在评论中这是一个很大的声明,所以我会将其作为答案发布。如果我对问题的理解是正确的,那就像是:
select *
from sizeconditionstable t1
join specalloytable t2
on (t1.c4 is not null and t2.c4 is not null and t1.c4 = t2.c4) or
(t1.c5 is not null and t2.c5 is not null and t1.c5 = t2.c5)
编辑:
select *
from sizeconditionstable t1
join specalloytable t2
on (t1.utc = t2.utc and t1.colnum = t2.colnum) and
((t1.c4 = t2.c4) or (t1.c4 is null and t2.c4 is null)) and
((t1.c5 = t2.c5) or (t1.c5 is null and t2.c5 is null))
这个版本将始终在utc
和colnum
以及c4和c5上加入,如果它们在两个表格中填充的话。
答案 1 :(得分:1)
coalesce(column1,column2,'')会起作用,但是,它并不便宜,所以如果你加入两个大表,你最好采用不同的方法。
答案 2 :(得分:0)
我认为UNION ALL查询是您最好的选择。
UPDATE users SET column_name =column_name+10 WHERE id=4
Here 10 is the number by which i want to increase the value of colunm
在这种情况下,如果字段2为空且字段3不为,则第一个查询没有结果,但第二个查询带来结果
答案 3 :(得分:0)
我重新阅读了您的请求。联合查询是适当的解决方案。这些方面的东西应该运作良好。
选择*
这 ( 选择 t1.primaryKey, t2.foreignKey 从 table1 t1内连接table2 t2 on t1.c1 = t2.c1
union
select
t1.primaryKey,
t2.foreignKey
from
table1 t1 inner join table2 t2 on t1.c2 = t2.c2
) x inner join table1 t1 on x.primaryKey = t1.primaryKey
inner join table2 t2 on x.foreignKey