求助sql大神,两张表查找输出新表

求助sql大神,两张表查找输出新表,第1张

--以下sql在oracle和db2等支持row_number函数的数据库中通用,mysql的话需要定义变量去重,需要的话再提出,可补充,如果一定要进行遍历则需要进行plsql编程,用游标循环进行遍历
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,ccgroup
from 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 20

SQL 的连接(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都被查询出了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13362130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-21
下一篇 2023-07-21

发表评论

登录后才能评论

评论列表(0条)

保存