2个表内的字段找相同记录。

xiaoyehua 2009-05-25 04:30:40
需求:
a表的a字段某记录如果同b表b字段某个记录一致。则把这2条记录都列出来。

数据量:a,b分别1W条记录这样,2个表的增长速度是每天100条。

我第一反应就是建2个dw,然后循环读取,不过担心数据量不小,这样效率不高,到后面‘乘积’就很大了

想请教大伙更好的经验,当然越详细越好,不然给个思路也行啊。先谢谢了
...全文
113 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyehua 2009-05-26
  • 打赏
  • 举报
回复
谢谢大家。给分按照个人最容易接受和最让小弟受益的参考去给了。
WorldMobile 2009-05-25
  • 打赏
  • 举报
回复
如果A表里列为col_a, B的列为col_b

select * from a where a.col_a in ( select col_b from b);

在b的col_b里建一个索引,速度不会慢,至少用百万级没有问题

取b表里的数据

select * from b where b.col_b in ( select col_a from a);

在a的col_a里建一个索引,速度不会慢,至少用百万级没有问题


如果取两个表

select * from a where a.col_a in ( select col_b from b)
union
select * from b where b.col_b in ( select col_a from a);
newease 2009-05-25
  • 打赏
  • 举报
回复
使用 Outer Join 外部连接


参与连接的表有主从之分 以主表的每行数据去匹配从表的数据列 符合连接条件的数据将直接返回到结果集中 对那些不符合连接条件的
列 将被填上 NULL 值后再返回到结果集中 对 BIT 类型的列 由于 BIT 数据类型不允许 NULL 值 因此将会被填上 0 值再返回到结果中
外部连接分为左外部连接 Left Outer Join 和右外部连接 Right Outer Join 两种以主表所在的方向区分外部连接 主表在左边 则称为左外部连接 主表在右边 则称为
右外部连接
例 10-22 查询订货的订货号 订货商名称 产品名称
use pangu
select a.order_id, b.f_name,c.p_name
from orders a left join firms b on a.firm_id = b.firm_id
right join products c on c.p_id = a.p_id
order by a.o_date
wag_enu 2009-05-25
  • 打赏
  • 举报
回复
试试:
SELECT * FROM a INNER JOIN b ON a.a = b.b
fm20027 2009-05-25
  • 打赏
  • 举报
回复
是否可以这样理解你的要求:a表中有若干列,假设其中有一列是l1,b表中也有若干列,其中有一个列是l2.
如果a.l1 = b.l2相等,则列出记录内容?
如果是这样,那就建一个view就行了。
select a.l1,a.l2,a.l3,b.l1,b.l2,b.l3... from a,b where a.l1 = b.l2
看是这样吗?view是个虚拟表,没有什么检索时间问题,多少记录都行。

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧