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
分享到:
相关推荐
这个查询语句将查询出两个表中的所有不同记录,並将结果显示在 Sheet3 中。 本文详细介绍了如何使用 Excel VBA 在两个表中查询相同的记录、不同的记录。这个程序可以帮助用户快速地查询出两个表中的共同记录和不同...
Visual Foxpro 中的 SQL 语句提供了强大的数据处理和分析功能,用户可以使用这些语句来查找两个表中相同或不同的记录,并生成新表。 在实际应用中,Visual Foxpro 的 SQL 语句可以用于各种数据处理和分析任务,如...
1. **初始化和准备数据**:创建两个DataTable对象,分别填充数据。数据可以通过SQL查询获取,也可以手动添加。 ```csharp DataTable dt1 = new DataTable(); DataTable dt2 = new DataTable(); // 填充数据 // ......
在描述中提到的查询需求,是关于如何从这两个表中检索出一个完整的树状结构。这通常需要执行两种类型的查询:一种是从父表出发,查找所有子节点(父查子);另一种是从子表出发,查找其父节点(子查父)。 1. **父...
这两个表之间可以通过`user_id`字段进行关联。由于MySQL本身并不支持直接进行跨服务器、跨数据库的连接查询操作,因此需要寻找一种可行的解决方案来实现这一需求。 #### 二、解决思路 1. **增加数据库配置信息**:...
1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、查询出所有数据进行分组之后,和重复数据...
### Oracle异库同表名的两个数据库中数据合并或数据表结构的修改 在Oracle数据库管理与维护过程中,经常会遇到需要处理多个不同数据库之间数据同步、数据合并以及表结构更改等问题。本文将针对“Oracle异库同表名的...
本文将深入探讨如何使用C#进行两个数据库表结构的比较,并解析描述中提到的知识点。 首先,我们要理解“表结构”这个概念。在关系型数据库中,表结构通常包括表名、字段名、字段类型、主键、外键、索引等要素。这些...
- **使用JOIN代替子查询**:如果两个表中的数据量都不大,可以尝试使用INNER JOIN等连接方式来代替子查询,这样可以显著提升查询效率。 - **索引优化**:对于涉及的表和字段,合理建立索引可以极大提高查询速度。 - ...
然后,可以通过DataTable的`Select()`方法和Linq查询来找出两个表之间的差异。 ```csharp DataTable table1 = LoadTableFromServer1(); DataTable table2 = LoadTableFromServer2(); var differences = table1...
3. **SQL查询**:如果FoxPro支持SQL,可以使用`JOIN`或`EXCEPT`等SQL语句来找出两个表之间的差异。 4. **编程库或API**:对于更复杂的比较任务,可以利用FoxPro的编程库或API,创建自定义的比较算法。 在提供的...
"两个数据库数据查询"这个主题涉及到如何在不同的数据库系统之间进行数据交互和同步,这对于数据整合、分析以及跨系统应用开发具有重要意义。下面我们将深入探讨这一主题。 首先,我们理解数据库是存储和管理数据的...
在实现过程中,你可能需要对解析出的SQL语句进行预处理,以适应不同的数据结构。 9. **项目配置**:整个Java项目应该包含必要的配置文件,如数据库连接配置、定时任务配置等。这些配置可以使用如Properties或YAML...
在实际应用中,可能需要经常对比两个表之间的数据是否一致,这有助于发现并解决数据同步问题、数据迁移问题等。本文将详细介绍几种常用的在Oracle中对比两张表数据一致性的方式。 #### 方法一:利用Oracle 11g中的`...
数据可以存储在一个共享的数据库中,两个程序通过查询和更新数据库来实现数据交换。数据库提供了事务处理和数据一致性保证,适用于需要持久化存储和并发访问的场景。 6. **网络通信**: 使用TCP/IP或UDP协议,两...
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进行两表数据...
在MySQL中,比较两个表是否有不同数据是一项常见的任务,特别是在数据迁移、数据同步或数据验证的场景下。这里我们将深入探讨如何有效地完成这项任务,避免繁琐的循环查询和提高效率。 首先,我们要理解传统的比较...