insert into C
select nvl(tab2 c,'无')
from A tab1
left join (
--以B字段为条件去重,只保留一条结果,排序方式自行选择
select b,c from(
select rownumber() over(partition by Bb order by Bc) rm,b,c B
) where rm=1
) tab2 on tab1a=tab2 b
你这个关键在于,
id在A表是否可能重复? ---假设是不能重复的
pid在B表是否可能重复? ---假设是能重复的,pid,class联合起来是不重复的
tid在C表是否可能重复? ---假设是能重复的,tid,group联合起来是不重复的
select aid,aname,agrade,bbclass,ccgroupfrom a,
(select pid,max(class) class from b group by pid) bb,
(select tid,max(group) group from c group by tid) cc
where aid = bbpid and aid = cctid
and Aid between 10 and 20SQL 的连接(JOIN)语句将数据库中的两个或多个表组合起来[1] 由"连接"生成的集合, 可以被保存为表, 或者当成表来使用 JOIN 语句的含义是把两张表的属性通过它们的值组合在一起 基于 ANSI 标准的 SQL 列出了五种 JOIN 方式: 内连接(INNER), 全外连接(FULL OUTER), 左外连接(LEFT OUTER), 右外连接(RIGHT OUTER)和交叉连接(CROSS) 在特定的情况下, 一张表(基本表, 视图, 或连接表)可以和自身进行连接, 成为自连接(self-join)
程序员用 JOIN 谓词表示要得到"连接"后的集合 如果evaluated predicate为真, 组合后的记录就会按照预期的方式生成, 如一个记录集, 或者一张临时表直接在where条件里面筛选不行吗?
c_serviceentity与c_circuit时条件加上ABSTRACTENTITY_ID=108
c_serviceentity与c_port时条件加上ABSTRACTENTITY_ID=105;
如果一定要用IF,可以定义个变量
if 变量=108 。。。
c_serviceentity与c_circuit时条件加上ABSTRACTENTITY_ID=变量。。
SQL查询两个表中不同数据的步骤如下:
我们需要准备的材料分别是:电脑、sql查询器。
1、首先,打开sql查询器,连接上相应的数据库表,以查询c1表和c2表的name字段不同为例。
2、点击“查询”按钮,输入:
select c1`name` from c1 left join c2 on c1`name`=c2`name` where c2`name` is null
union select c2`name` from c2 left join c1 on c1`name`=c2`name` where c1`name` is null。
3、点击“运行”按钮,此时不同的name都被查询出了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)