【SQL】大小表查询、更新表语句

1、更新表时,根据另一张表的数据进行更新update from where

UPDATE B表 SET B表.字段名 =

(SELECT A表.字段名 FROM A表 WHERE A表.ID = B表.ID);

UPDATE A

SET A.field_name = B.field_name

FROM B

WHERE A.matching_field = B.matching_field;

UPDATE employees AS A

SET A.department_id = departments.id

FROM departments AS B

WHERE A.department_name = B.department_name;

sql 复制代码
update IM_CS_SYSTEM_NEXTHAN_CONFIG_temp x set x.login_id = y.login_id from (
select b.LOGIN_ID,b.login_code,a.supply_org_code from IM_CS_SYSTEM_NEXTHAN_CONFIG_temp a
left join EP_R_USER_LOGIN b on a.supply_org_code= b.login_code
) y
where 
x.supply_org_code= y.login_code and y.LOGIN_ID is NOT NULL;

2、sql 查询大表有这个数据,但是小表没有

在数据库中处理大表和小表的数据比较问题时,通常涉及到查找大表中存在但在小表中不存在的记录。这可以通过几种不同的SQL查询方法来实现,具体取决于你使用的数据库系统(如MySQL、PostgreSQL、SQL Server等)。以下是一些常见的方法:

1. 使用 NOT EXISTS 子查询

如果你想要找出所有在大表中存在但在小表中不存在的记录,可以使用 NOT EXISTS 子查询。例如,假设有两个表:large_table 和 small_table,并且它们都有一个共同的字段 id:

SELECT l.*

FROM large_table l

WHERE NOT EXISTS (

SELECT 1

FROM small_table s

WHERE s.id = l.id

);

这个查询会返回所有在 large_table 中但不在 small_table 中的记录。

2. 使用 LEFT JOIN 和 IS NULL

另一种方法是使用 LEFT JOIN,然后检查连接结果中的小表部分是否为空:

SELECT l.*

FROM large_table l

LEFT JOIN small_table s ON l.id = s.id

WHERE s.id IS NULL;

这个查询也会返回所有在 large_table 中但不在 small_table 中的记录。

3. 使用 EXCEPT(在SQL Server和PostgreSQL中)

如果你使用的是支持 EXCEPT 关键字的数据库系统(如SQL Server或PostgreSQL),你可以使用它来找出差异:

SELECT id FROM large_table

EXCEPT

SELECT id FROM small_table;

这会返回所有在 large_table 中但不在 small_table 中的 id。

4. 使用 MINUS(在Oracle中)

如果你使用的是Oracle数据库,可以使用 MINUS 操作符:

SELECT id FROM large_table

MINUS

SELECT id FROM small_table;

  1. 使用 NOT IN(不推荐,性能可能不佳)

虽然在一些情况下可以使用 NOT IN,但这种方法在处理大数据集时可能会非常慢,因为它需要多次扫描小表来检查每个值是否不在其中。因此,除非其他方法不可行,否则不推荐使用:

SELECT l.*

FROM large_table l

WHERE l.id NOT IN (SELECT s.id FROM small_table s);

性能注意事项:

索引:确保用于连接的列(如上述示例中的 id 字段)在两个表中都已建立索引。这可以显著提高查询性能。

查询优化:对于非常大的表,考虑查询优化策略,如分批处理数据或使用临时表来存储中间结果。

数据库特性:不同数据库系统有不同的优化技术和最佳实践,了解并利用你的数据库系统的特性可以提升查询效率。

通过上述方法,你可以有效地找出大表中存在而小表中不存在的数据记录。选择最适合你具体情况和数据库系统的查询方法。

相关推荐
数据与人21 分钟前
ksql 元命令完整帮助
数据库·oracle
m0_5811241924 分钟前
Python日志记录(Logging)最佳实践
jvm·数据库·python
大黄说说27 分钟前
打通异构数据库:PostgreSQL 通过 mysql_fdw 实现 MySQL 透明查询实战
数据库·mysql·postgresql
马克学长41 分钟前
SSM在浙智游bjl48(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·浙智游系统·景点信息管理
姚远Oracle ACE44 分钟前
Step-by-Step: 在 Linux 上使用 VMware 安装 Oracle 26ai RAC 数据库
linux·数据库·oracle
naruto_lnq1 小时前
如何为开源Python项目做贡献?
jvm·数据库·python
一只专注api接口开发的技术猿1 小时前
淘宝商品详情API的流量控制与熔断机制:保障系统稳定性的后端设计
大数据·数据结构·数据库·架构·node.js
少云清1 小时前
【金融项目实战】4_接口测试 _数据准备和清理
数据库·金融项目实战
疯狂的喵1 小时前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
善木科研喵1 小时前
IF5.9分,α-硫辛酸如何缓解化疗神经毒性?网络毒理学结合网络药理学双重锁定关键通路!
数据库·数据分析·r语言·sci·生信分析·医学科研