数据库中两张表的各种连接方法

今天遇到了如下的问题,在CSDN上提问 

查询语句如下:
SELECT
A.CameraID,  A.CryptMode,  A.CameraName,  B.CameraID AS LeftCameraID
FROM
C001_Camera A  LEFT JOIN  C002_Control B
ON
B.CameraID=A.CameraID
WHERE
(A.ControlerID IS NOT NULL AND A.ControlerID != '')
ORDER BY
CAST(A.CameraID as SIGNED INTEGER)

结果中
A.CameraID为00006,
LeftCameraID为null
可是在上面不是有B.CameraID=A.CameraID一句了吗?怎么他们两个的值不一样呀?

 

问题解决后我才知道这是SQL语句中最基础的一个问题,哎!

那就总结一下吧:

 

cross join:是笛卡儿乘积,在没有任何条件约束下就是一张表的行数乘以别一张表的行数。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java连接数据库,然后通过SQL语句查询两张的数据,再通过Java代码将查询结果进行比较,找出不同之处。具体的实现方式可以参考以下步骤: 1. 使用JDBC连接数据库,获取数据库连接对象。 2. 使用SQL语句查询两张的数据,将查询结果存储到Java。 3. 对比两个结果集,找出不同之处,可以使用Java代码实现。 4. 最后关闭数据库连接。 以下是一个简单的示例代码,用于比较两张的数据是否相同: ```java import java.sql.*; public class CompareTables { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { String sql1 = "SELECT * FROM table1"; String sql2 = "SELECT * FROM table2"; Statement stmt1 = conn.createStatement(); Statement stmt2 = conn.createStatement(); ResultSet rs1 = stmt1.executeQuery(sql1); ResultSet rs2 = stmt2.executeQuery(sql2); boolean isDifferent = false; while (rs1.next() && rs2.next()) { if (!rs1.getString(1).equals(rs2.getString(1))) { isDifferent = true; break; } } if (isDifferent) { System.out.println("Tables are different"); } else { System.out.println("Tables are same"); } rs1.close(); rs2.close(); stmt1.close(); stmt2.close(); } catch (SQLException e) { System.out.println(e.getMessage()); } } } ``` 以上代码,我们首先建立了一个test数据库,并在该数据库创建了两张table1和table2。然后使用JDBC连接数据库,分别查询两张的数据,并逐行比较两个结果集的每一行数据,如果存在不同之处,则将isDifferent设置为true,示两个的数据不同。最后根据isDifferent的值输出结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值