CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

如何写两个表的关联和模糊查询同时存在的sql

楼主Cadillac(努力学好C++发奋学好English)2006-03-08 16:49:44 在 Oracle / 开发 提问

如  
  表table1      
  id,name1  
  100,刘  
  101,   李  
   
  表table2  
  id   ,   name2  
  100,   班长  
  v_id     其它职务  
   
  现在我需要查询的结果是id,   name2  
                                              100,   班长  
                                              v_id   其它职务  
   
  就是说将表table1的id和table2的id相关联查询,然后还要包括table2.id   like   'v_%';  
  我是这样写的  
  select   table2.id,table2.name2   from   table1,table2   where   table2.id   =   table1.id   or   table2.id   like   'v_%';  
  可是最后查出来的结果是  
  100,   班长  
  v_id   其它职务  
  v_id   其它职务  
  请问v_id为什么出现了两次啊,我加上distinct也是不行啊  
  谢谢  
  问题点数:20、回复次数:9Top

1 楼letsflytogether(伍子)回复于 2006-03-08 16:58:55 得分 0

select   *   from   (select   *   from   table1   union   select   *   from   table2)   a  
  where   a.id   like   'v_%';  
  Top

2 楼twenty_three(god is a girl)回复于 2006-03-08 17:00:01 得分 0

select   table2.id,table2.name2   from   table1,table2   where   table2.id   =   table1.id    
  union   distinct   select   table2.id,table2.name2   from   table1,table2   where   table2.id   like   'v_%';  
  这样可以么?Top

3 楼sbaz(万神渡劫)回复于 2006-03-09 11:35:35 得分 0

select   distinct   table2.id,table2.name2   from   table1,table2   where   table2.id   =   table1.id   or   table2.id   like   'v_%';  
  就可以啦.  
  你的TABLE1有多少条记录,v_id   其它职务就重复出现多少次.Top

4 楼sbaz(万神渡劫)回复于 2006-03-09 11:37:10 得分 0

select   table2.id,table2.name2   from   table1,table2   where   table2.id   =   table1.id    
  union    
  select   table2.id,table2.name2   from   table1,table2   where   table2.id   like   'v_%';  
  也行Top

5 楼Cadillac(努力学好C++发奋学好English)回复于 2006-03-09 12:23:16 得分 0

不行啊,这样!!!!!!!!!!!Top

6 楼sbaz(万神渡劫)回复于 2006-03-09 13:15:23 得分 0

怎么可能不行?  
  select   table2.id,table2.name2   from   table1,table2   where   table2.id   =   table1.id    
  union    
  select   table2.id,table2.name2   from   table2   where   table2.id   like   'v?_%'   escape   '?';  
  是不是要写成这样?  
  如果这还不符合你的要求的话那就没话说了.  
   
  还有就是用DISTINCT   就完全可以的.你说不行的话就是你自己用错了.Top

7 楼Cadillac(努力学好C++发奋学好English)回复于 2006-03-09 15:50:23 得分 0

我的意思是这样的,table1,table2两个表,其中使用ID进行关联  
  将id相同的记录提出来,然后在table2中有一些比较特殊的id,是以V_开头的,这样的记录我也要提取出来,请问这样功能的sql该怎么写  
  谢谢Top

8 楼xiaoxiao1984(笨猫儿)回复于 2006-03-09 18:13:57 得分 0

sbaz(万神渡劫)的方法是正确的,符合楼主的意思的啊:    
  select   table2.id,table2.name2   from   table1,table2   where   table2.id   =   table1.id    
  union    
  select   table2.id,table2.name2   from   table2   where   table2.id   like   'v?_%'   escape   '?';  
  table1,table2两个表,其中使用ID进行关联,得到id相同的记录集,合并在table2中有一些比较特殊的id,是以V_开头的记录集(不包含重复记录)  
  应该是没有问题的,楼主试试看再说Top

9 楼Cadillac1()回复于 2006-03-23 17:17:57 得分 20

zvTop

相关问题

  • 关于表关联时SQL语句的关联条件
  • sql 关联表求和的问题!!!!
  • SQL Server两表关联的问题
  • 表关联的sql语句(急!)
  • 表关联sql语句问题,谢谢
  • 如何用SQL Plus查看Oracle中表间关联?
  • MS SQL Server下的多表关联Update问题
  • SQL Server一对多多表关联Update问题
  • 关于SQL SERVER2000中关联表的问题,请高手指教
  • 在SQL SERVER里如何删除多表里关联的行?

关键词

  • table2
  • 表
  • 关联
  • 职务
  • 记录
  • 班长
  • 不行
  • distinct
  • union
  • table

得分解答快速导航

  • 帖主:Cadillac
  • Cadillac1

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo