【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 字段)在两个表中都已建立索引。这可以显著提高查询性能。

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

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

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

相关推荐
爱学习的阿磊19 分钟前
使用Fabric自动化你的部署流程
jvm·数据库·python
枷锁—sha25 分钟前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
惜分飞37 分钟前
ORA-600 kcratr_nab_less_than_odr和ORA-600 4193故障处理--惜分飞
数据库·oracle
chian-ocean38 分钟前
CANN 生态进阶:利用 `profiling-tools` 优化模型性能
数据库·mysql
m0_5500246341 分钟前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
AC赳赳老秦42 分钟前
代码生成超越 GPT-4:DeepSeek-V4 编程任务实战与 2026 开发者效率提升指南
数据库·数据仓库·人工智能·科技·rabbitmq·memcache·deepseek
啦啦啦_99991 小时前
Redis-2-queryFormat()方法
数据库·redis·缓存
玄同7652 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
吾日三省吾码2 小时前
别只会“加索引”了!这 3 个 PostgreSQL 反常识优化,能把性能和成本一起打下来
数据库·postgresql
chian-ocean2 小时前
百万级图文检索实战:`ops-transformer` + 向量数据库构建语义搜索引擎
数据库·搜索引擎·transformer