`
nicegege
  • 浏览: 589742 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

两个表中查询出不同的数据

 
阅读更多

1.有两个表,表的属性都有:id,name,sex,age;第一个表有700条数据,第二个表有500条数据,其中两个表中有300条是name相同的,如何把两个表中不相同的数据取出来,怎么做?

答:

首先建2个表student1和student2,各有以上的四个字段。

我用mysql5.1数据库测试

1.SELECT DISTINCT  t.* FROM (SELECT * FROM student1  UNION (SELECT * FROM student2 )) AS t
2.SELECT * FROM student1 UNION (SELECT * FROM student2 WHERE NAME NOT IN (SELECT NAME FROM student1))

以上两个sql都可以查到。

数据库连接

package com.db;


import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import com.mysql.jdbc.PreparedStatement;

public class DBConnection {
	//从db.properties获取属性然后使用
	public String[] getDBProperties(String dbtype){
		Properties prop=new Properties();
		String driver = null,url=null,username=null,password=null;
		try {
			String type=changDBType(dbtype);		
			String[] dbCon=new String[]{
					type+"_Driver",
					type+"_Url",
					type+"_Username",
					type+"_Password"};
			prop.load(ClassLoader.getSystemResourceAsStream("db.properties"));
			driver=prop.getProperty(dbCon[0]);
			url=prop.getProperty(dbCon[1]);
			username=prop.getProperty(dbCon[2]);
			password=prop.getProperty(dbCon[3]);		
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}	
		String db[]=new String[]{driver,url,username,password};
		return db;
	}
	//首先把字符串的第一个字符变大写,其他的变小写
	public String changDBType(String dbtype) throws Exception{
			if(dbtype.isEmpty()){
				throw new Exception("dbtype字符串为空");	
			}else{
				return String.valueOf(dbtype.charAt(0)).toUpperCase().concat(dbtype.substring(1).toLowerCase());
			}	
	}
	Connection con;
	Statement stat;
	public Connection getCon(String driver,String url,String username,String password){
		try{
	
			Class.forName(driver);
			con=DriverManager.getConnection(url,username,password);
			stat=con.createStatement();	
		}catch(SQLException e){			
			System.out.println("数据库连接SQL异常");
		} catch (ClassNotFoundException e) {
			System.out.println("数据库连接类找不到异常");
			e.printStackTrace();
		}
		return con;
	}
	public static void main(String args[]){
		DBConnection dbc=new DBConnection();
		String db[]=dbc.getDBProperties("mysql");

		Connection con=dbc.getCon(db[0], db[1], db[2], db[3]);
		String sql1="insert into student1(id,name,sex,age) values(?,?,?,?)";
		String sql2="insert into student2(id,name,sex,age) values(?,?,?,?)";
		try {
			PreparedStatement pstmt=(PreparedStatement) con.prepareStatement(sql2);
			for(int i=301;i<=500;i++){
				pstmt.setObject(1, i);
				pstmt.setObject(2, "郑爽"+i);
				pstmt.setObject(3, "女"+i);
				pstmt.setObject(4, 20);
				pstmt.execute();
			}
			
	
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		


		
}

db.properties

Mysql_Driver=com.mysql.jdbc.Driver
Mysql_Url=jdbc:mysql://localhost:3306/itcast?useUnicode=true&characterEncoding=UTF-8
Mysql_Username=root
Mysql_Password=liming

Oracle_Driver=oracle.jdbc.driver.OracleDriver
Oracle_Url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
Oracle_Username=ytpms
Oracle_Password=ytpms

  

分享到:
评论

相关推荐

    Excel VBA 两个表中查询相同的记录、不同的记录 例程

    这个查询语句将查询出两个表中的所有不同记录,並将结果显示在 Sheet3 中。 本文详细介绍了如何使用 Excel VBA 在两个表中查询相同的记录、不同的记录。这个程序可以帮助用户快速地查询出两个表中的共同记录和不同...

    在Visual Foxpro中使用SQL语句查找两个表中相同或不同的记录.pdf

    Visual Foxpro 中的 SQL 语句提供了强大的数据处理和分析功能,用户可以使用这些语句来查找两个表中相同或不同的记录,并生成新表。 在实际应用中,Visual Foxpro 的 SQL 语句可以用于各种数据处理和分析任务,如...

    C# 两个datatable中的数据快速比较返回交集 并集或差集

    1. **初始化和准备数据**:创建两个DataTable对象,分别填充数据。数据可以通过SQL查询获取,也可以手动添加。 ```csharp DataTable dt1 = new DataTable(); DataTable dt2 = new DataTable(); // 填充数据 // ......

    两个表 关于树的组合

    在描述中提到的查询需求,是关于如何从这两个表中检索出一个完整的树状结构。这通常需要执行两种类型的查询:一种是从父表出发,查找所有子节点(父查子);另一种是从子表出发,查找其父节点(子查父)。 1. **父...

    thinkPHP5解决不同服务器不同数据库表关联查询问题

    这两个表之间可以通过`user_id`字段进行关联。由于MySQL本身并不支持直接进行跨服务器、跨数据库的连接查询操作,因此需要寻找一种可行的解决方案来实现这一需求。 #### 二、解决思路 1. **增加数据库配置信息**:...

    MySQL根据某一个或者多个字段查找重复数据的sql语句

    1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) &gt; 1) 2、查询出所有数据进行分组之后,和重复数据...

    oracle异库同表名的两个数据库中数据合并或数据表结构的修改

    ### Oracle异库同表名的两个数据库中数据合并或数据表结构的修改 在Oracle数据库管理与维护过程中,经常会遇到需要处理多个不同数据库之间数据同步、数据合并以及表结构更改等问题。本文将针对“Oracle异库同表名的...

    两个数据库表结构比较(C#)

    本文将深入探讨如何使用C#进行两个数据库表结构的比较,并解析描述中提到的知识点。 首先,我们要理解“表结构”这个概念。在关系型数据库中,表结构通常包括表名、字段名、字段类型、主键、外键、索引等要素。这些...

    SQL实现两张无关联表的数据列合并在一张结果集中

    - **使用JOIN代替子查询**:如果两个表中的数据量都不大,可以尝试使用INNER JOIN等连接方式来代替子查询,这样可以显著提升查询效率。 - **索引优化**:对于涉及的表和字段,合理建立索引可以极大提高查询速度。 - ...

    c# 更改不同服务器两个表保持一致

    然后,可以通过DataTable的`Select()`方法和Linq查询来找出两个表之间的差异。 ```csharp DataTable table1 = LoadTableFromServer1(); DataTable table2 = LoadTableFromServer2(); var differences = table1...

    两个foxpro的dbf表的比较

    3. **SQL查询**:如果FoxPro支持SQL,可以使用`JOIN`或`EXCEPT`等SQL语句来找出两个表之间的差异。 4. **编程库或API**:对于更复杂的比较任务,可以利用FoxPro的编程库或API,创建自定义的比较算法。 在提供的...

    两个数据库数据查询 1

    "两个数据库数据查询"这个主题涉及到如何在不同的数据库系统之间进行数据交互和同步,这对于数据整合、分析以及跨系统应用开发具有重要意义。下面我们将深入探讨这一主题。 首先,我们理解数据库是存储和管理数据的...

    java实现两个mysql同步主库的数据

    在实现过程中,你可能需要对解析出的SQL语句进行预处理,以适应不同的数据结构。 9. **项目配置**:整个Java项目应该包含必要的配置文件,如数据库连接配置、定时任务配置等。这些配置可以使用如Properties或YAML...

    Oracle中比对2张表之间数据是否一致的几种方法

    在实际应用中,可能需要经常对比两个表之间的数据是否一致,这有助于发现并解决数据同步问题、数据迁移问题等。本文将详细介绍几种常用的在Oracle中对比两张表数据一致性的方式。 #### 方法一:利用Oracle 11g中的`...

    可在两个程序之间传递数据

    数据可以存储在一个共享的数据库中,两个程序通过查询和更新数据库来实现数据交换。数据库提供了事务处理和数据一致性保证,适用于需要持久化存储和并发访问的场景。 6. **网络通信**: 使用TCP/IP或UDP协议,两...

    Java获取两个int型数组中不同的元素

    int[] a = { 4, 2, 1, 3, 5 }; int[] b = { 2, 3, 5 ,6,7}; 获得的结果 [4, 1, 6, 7] (先是a中与b中不同的数字,再是b中与a中不同的数字)

    不同数据库之间的不同表结构的数据迁移

    在"不同数据库之间的不同表结构的数据迁移"这个主题中,我们将深入探讨这个过程,以及如何处理不同数据库系统之间可能存在的表结构差异。 首先,我们要理解不同的数据库管理系统(DBMS)如MySQL、Oracle、SQL ...

    EXCEL两表数据比对

    在Excel中进行两表数据比对是一项常见的数据分析任务,尤其适用于检查数据的一致性或找出差异。例如,在学校成绩管理中,可能需要核对不同来源的成绩数据,确保录入无误。下面将详细介绍如何利用Excel进行两表数据...

    mysql实用技巧之比较两个表是否有不同数据的方法分析

    在MySQL中,比较两个表是否有不同数据是一项常见的任务,特别是在数据迁移、数据同步或数据验证的场景下。这里我们将深入探讨如何有效地完成这项任务,避免繁琐的循环查询和提高效率。 首先,我们要理解传统的比较...

Global site tag (gtag.js) - Google Analytics