热门标签 | 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
)

推荐阅读
  • SQLite数据库CRUD操作实例分析与应用
    本文通过分析和实例演示了SQLite数据库中的CRUD(创建、读取、更新和删除)操作,详细介绍了如何在Java环境中使用Person实体类进行数据库操作。文章首先阐述了SQLite数据库的基本概念及其在移动应用开发中的重要性,然后通过具体的代码示例,逐步展示了如何实现对Person实体类的增删改查功能。此外,还讨论了常见错误及其解决方法,为开发者提供了实用的参考和指导。 ... [详细]
  • 在Oracle数据库中,若需更新特定列的数据,可以通过联接两张表来实现。例如,假设我们有两张表:`sales` 和 `goods`。为了更新 `sales` 表中的某些列,可以使用 `UPDATE` 语句结合 `JOIN` 操作,确保数据的准确性和一致性。具体操作步骤包括选择需要更新的目标列,定义联接条件,并指定更新后的值。这种方法不仅提高了数据处理的效率,还保证了数据的完整性。 ... [详细]
  • MySQL索引详解及其优化策略
    本文详细解析了MySQL索引的概念、数据结构及管理方法,并探讨了如何正确使用索引以提升查询性能。文章还深入讲解了联合索引与覆盖索引的应用场景,以及它们在优化数据库性能中的重要作用。此外,通过实例分析,进一步阐述了索引在高读写比系统中的必要性和优势。 ... [详细]
  • 本文详细探讨了Zebra路由软件中的线程机制及其实际应用。通过对Zebra线程模型的深入分析,揭示了其在高效处理网络路由任务中的关键作用。文章还介绍了线程同步与通信机制,以及如何通过优化线程管理提升系统性能。此外,结合具体应用场景,展示了Zebra线程机制在复杂网络环境下的优势和灵活性。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • 在实际开发中,连接池是最常使用的数据库管理技术之一。连接池通过创建和管理一组预初始化的数据库连接,使得这些连接可以被多个线程复用,从而显著提高应用程序的性能和资源利用率。本文将详细介绍如何从零开始构建一个自定义的 MySQL 连接池,并将其与 Spring Data 进行集成,以实现高效、可靠的数据库操作。 ... [详细]
  • 本文详细介绍了 PHP 中 `sprintf` 函数的使用方法,并通过具体示例进行说明。例如,使用 `%%` 作为参数时,`%%` 会被替换为 `%`。通过 `echo sprintf($str)` 可以验证这一行为,返回的结果是“测试一下 % 这个参数,会被替换成什么”。此外,文章还探讨了 `sprintf` 函数在格式化字符串中的多种应用场景,包括数字格式化、日期时间处理等,帮助读者全面掌握该函数的使用技巧。 ... [详细]
  • 在C#中开发MP3播放器时,我正在考虑如何高效存储元数据以便快速检索。选择合适的数据结构,如字典或数组,对于优化性能至关重要。字典能够提供快速的键值对查找,而数组则在连续存储和遍历方面表现优异。根据具体需求,合理选择数据结构将显著提升应用的响应速度和用户体验。 ... [详细]
  • 在TypeScript中,我定义了一个名为 `Employee` 的接口,其中包含 `id` 和 `name` 属性。为了使这些属性可选为空,可以通过使用 `| null` 或 `| undefined` 来扩展其类型定义。例如,`id: number | null` 表示 `id` 可以是数字或空值。这种类型的灵活性在处理不确定的数据时非常有用,可以提高代码的健壮性和可维护性。 ... [详细]
  • 在近期的项目开发过程中,ORM层采用了MyBatis,并且需要连接多个数据库,这带来了多数据源配置的挑战。为了解决这一问题,我们可以通过巧妙运用注解来实现优雅的数据源切换,确保系统的灵活性和可维护性。这种方法不仅简化了配置,还提高了代码的可读性和扩展性。 ... [详细]
  • 在使用 `useSelector` 选择器时,发现分派操作后状态未能实时更新。这可能是由于 React 组件的渲染机制或 Redux 的状态管理问题导致的。建议检查 `useSelector` 的依赖项和 `dispatch` 的调用时机,确保状态变化能够正确触发组件重新渲染。此外,可以考虑使用 `useEffect` 钩子来监听状态变化,以确保及时更新。 ... [详细]
  • 在MySQL中实现时间比较功能的详细解析与应用
    在MySQL中实现时间比较功能的详细解析与应用。本文深入探讨了MySQL中时间比较的实现方法,重点介绍了`UNIX_TIMESTAMP`函数的应用。该函数可以接收一个日期时间参数,也可以不带参数使用,其返回值为Unix时间戳,便于进行时间的精确比较和计算。此外,文章还涵盖了其他相关的时间处理函数和技巧,帮助读者更好地理解和掌握MySQL中的时间操作。 ... [详细]
  • 在 Windows 10 环境中,通过配置 Visual Studio Code (VSCode) 实现基于 Windows Subsystem for Linux (WSL) 的 C++ 开发,并启用智能代码提示功能。具体步骤包括安装 VSCode 及其相关插件,如 CCIntelliSense、TabNine 和 BracketPairColorizer,确保在 WSL 中顺利进行开发工作。此外,还详细介绍了如何在 Windows 10 中启用和配置 WSL,以实现无缝的跨平台开发体验。 ... [详细]
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社区 版权所有