热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

请教一个select语句

有两张一样的表,索引不只一个字段,怎样选出在一个表中有而在另一个表中没有的字段。比如t_at_b的结构是(zd1:char(10),zd2:integer,zd3
有两张一样的表,索引不只一个字段,怎样选出在一个表中有而在另一个表中没有的字段。比如
 t_a  t_b 的结构是
(
 zd1 :char(10),
 zd2 :integer,
 zd3 :char(20)
 )

13 个解决方案

#1


查看all_indexes系统表

#2


两张一样的表???

一个表中有而在另一个表中没有的字段???

那还一样?

#3


question not clear , do you mean the data exist in t_a but not in T_b

in that case , very easy

  select zd1 from t_a where zd1 not in (select zd1 from t_b)

#4


你是指两个表中,在索引上不同的字段.
如果你的索引都是单个字段上的索引.
如下:
Select Column_Name From User_Ind_Columns
where Table_name = 'T_A'
minus
Select Column_Name From User_Ind_Columns
where Table_name = 'T_B'

#5


select column_name from user_ind_columns where table_name='T_A'
minus
select column_name from user_ind_columns where table_name='T_B'

#6


select * from user_indexes where table_name = 'T1';
select * from user_indexes where table_name = 'T2';

#7


我曾经有 两张表,tablea,tableb,结构一样,table1.id=table2.id,可是table1的记录在table2中可能没有,但是table2 中的记录在table1肯定有,现在我要列出如下结构,怎么办;
 table1  table2
 id       id  
 id 
 id       id 

#8


我是这个意思,我的两张表结构完全一样,主键也一样比如
    tab_a (
    aa  char(10),
    bb  integer ,
    cc  char(5),
    dd  char(4)
   )
   tab_b(
    aa  char(10),
    bb  integer ,
    cc  char(5),
    dd  char(4)
   )
   两张表的主键一样,我想找出在tab_a 中有,但在tab_b 中没有的记录,如果表的主键是一个字段比如aa ,可以写成
  select * from tab_a where aa not in ( select aa from tab_b)
 但如果主键是(aa,bb)怎么班呢?总不能写成
select * from tab_a where (aa ,bb) not in ( select aa,bb from tab_b)
  我想知道有没有类似的写法?谢谢哈

#9


你有没有侧过你写的这句sql?
select * from tab_a where (aa ,bb) not in ( select aa,bb from tab_b)
这句没有错!
select * from test_1

A1    A2  A3                                                                              
aa    1   aa                                                                              
bb    2   bb                                                                              
cc    3   cc                                                                              
dd    4   dd                                                                              
ccc   3   dd                                                                              
                                                                                

select * from test_2;

A1    A2     A3                                                                              
aa    1      aa                                                                              
bb    2      bb                                                                              
cc    3      cc                                                                              
ddd   4      dd                                                                              
dd    5      dd                                                                              
ccc   4      dd                                                                              
                                                                                
select * from test_1 where (a1,a2) not in (select a1,a2 from test_2);

A1    A2   A3                                                                              
dd    4    dd                                                                              
ccc   3    dd

#10


select * from table1
minus
select * from table2

#11


上面的写法我都测试过了,还是不行,我现在用的是informix数据库,用的是
dbaccess测试,类似sqlplus,但可视话比较好,还有其他的写法吗,我想用
rowid,但这不准确,原来程序用的是游标,我想用几条语句改写,我的开发是这样的,我要做一个监督系统,系统里我按两种方式入帐,那么就会生成两套系统,我通过比较系统表的内容,写出监督结果,就有两张相同的表,设为t1,t2,分三部分,(1)t1 中有,t2中没有,(2)t2中有,t1没有 (3)t1,t2 都有但要素不同,比如余额不同等,原来用的是游标,我改写成批量的sql语句,第(3)肯定可以搞定,但(1)(2)的情况,有的表主键是两个以上字段,我写了几次都没有成功,大家看有没有标准的sql可以实现。谢谢

#12


可以用rowid 写
   select rowid from tab_a where rowid (select rowid 
from tba_b );
   然后按rowid选出就可以了,但是我不知这样有没有问题。我最后这样写的
    select rowid from tab_a where rowid (select rowid 
from tba_b ) into temp tmp_aa;
   select * from tab_a where rowid in (select * from tmp_aa);

#13


这个问题可以解决了,我在基本数据操作这边问了,写法如下:
select * from tab_a 
where not exists (
 select * from tab_b
 where tab_b.aa=tab_a.aa
 and tab_b.bb=tab_b.bb
)

推荐阅读
  • 本文详细介绍了MySQL 5.5及以上版本中事务管理的全过程,包括事务的启动、设置、锁机制以及解锁方法,旨在为开发者提供一个清晰、全面的操作指南,避免因网络资料分散而导致的学习障碍。 ... [详细]
  • 探讨 SQL Server 中显式谓词锁定机制如何影响外部插入操作,特别是在并发环境下。 ... [详细]
  • Python与MySQL交互指南:从基础到进阶
    本文深入探讨了Python与MySQL数据库的集成方法,包括数据库连接、数据表创建、索引管理、数据操作以及如何防止SQL注入等关键内容。适合初学者及希望提升数据库操作技能的开发者。 ... [详细]
  • Pikachu平台SQL注入漏洞详解
    本文详细介绍了SQL注入漏洞的基本原理、攻击流程、不同类型注入点的识别与利用方法,以及基于union联合查询、报错信息、布尔盲注、时间盲注等多种技术手段的信息获取方式。同时,探讨了如何通过SQL注入获取操作系统权限,以及HTTP Header注入和宽字节注入等高级技巧。最后,提供了使用SQLMap自动化工具进行漏洞测试的方法和常见的SQL注入防御措施。 ... [详细]
  • 初学者必备:iBATIS入门指南与常见问题解决
    本文旨在为iBATIS初学者提供一份详细的入门指南,并针对官方文档中示例不足的问题提出解决方案。适合零基础学习者。 ... [详细]
  • 从零开始学重构——重构的流程及基础重构手法
    重构的流程重构手法  正如上一次所讲的那样,重构有两个基本条件,一是要保持代码在重构前后的行为基本不变,二是整个过程是受控且尽可能少地产生错误。尤其是对于第二点,产生了一系列的重构手 ... [详细]
  • mybatis相关面试题 ... [详细]
  • 在一个大型的应用系统中,往往需要多个进程相互协作,进程间通信(IPC,InterProcessCommunication)就显得比较重要了。在Linux系统中,有很多种IPC机制, ... [详细]
  • 本文探讨了在Android应用程序开发过程中动态管理Fragment的方法,包括动态添加和切换Fragment,以及如何实现平滑的过渡动画。文章通过一个具体的案例——订单管理系统,详细介绍了实现步骤和技术细节。 ... [详细]
  • SQL技巧:处理重复值时将特定列设为0.000
    本文探讨了在遇到重复值时如何使用SQL将某一列设置为0.000的方法,特别适用于需要根据特定条件更新数据的场景。 ... [详细]
  • SQL Server中查询表结构与视图的方法,便捷高效
    本文介绍如何在SQL Server中轻松查询表结构和视图,提供简洁高效的SQL语句,特别适用于开发人员。 ... [详细]
  • 探讨如何利用Visual Basic (VB) 将十六进制或二进制字符串写入Windows注册表的方法。 ... [详细]
  • 本文探讨了如何在C++中将不同数据类型(如整型和浮点型)转换为16进制格式输出,并通过示例代码展示了具体的实现方法。测试环境为Ubuntu,Windows下的兼容性未验证。 ... [详细]
  • CUDA 技术旨在通过将大量计算任务分配给 GPU 来加速处理速度,从而节省时间。本文将探讨如何在 Linux 系统中使用 CUDA 查询设备(如显卡)的属性信息,包括但不限于内存分配和代码执行等关键参数。 ... [详细]
  • 一.介绍string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C标准之中 ... [详细]
author-avatar
拍友2602937077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有