SQL面试题——in和not in 不支持怎么办

embedded/2024/11/29 9:45:24/

in和not in 不支持怎么办

这是来自读者群的一位同学的问题,说是别人问他in和not in 不支持怎么办,现在我们来看一下这个问题

in 不支持

其实很多朋友都能写出这样的SQL,其实这个SQL 在没有底层优化的时候还是很可怕的

SELECT a.key, a.value
FROM a
WHERE a.key in
(SELECT b.key FROM b);

我们分析一下,这里有两种情况,其实那种都是不可取的

  1. 查询a 表的每一条记录,b 表都得进行一次查询
  2. b 表的所有记录都得一次性扫描出来,存在内存中

其实这也就是为什么早期一些查询引擎不支持的原因,其实这个问题很好解决,我们替换成join 就可以了

SELECT a.key, a.value
FROM a 
LEFT  JOIN b 
ON a.key = b.key
WHERE b.key is not  NULL;

其实这个我们可以更简单点

SELECT a.key, a.value
FROM a 
inner  JOIN b 
ON a.key = b.key

not


http://www.ppmy.cn/embedded/141428.html

相关文章

LeetCode题练习与总结:替换后的最长重复字符--424

一、题目描述 给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。 在执行上述操作后,返回 包含相同字母的最长子字符串的长度。 示例 1: 输入:s &quo…

什么是 Token 和 MD5 ?

目录 一:Token和MD5分别是什么 1:Token 2:MD5 二:简易Token的实现 1:Base64。 2:验证Token 三:MD5的使用 一:Token和MD5分别是什么 1:Token Token 的中文有人翻译成…

nvm 常用命令

nvm 常用命令 参考1 参考2 nvm list available 查看nodejs有哪些版本 npm install 10.13.0 下载10.13.0版本 nvm use 10.13.0 切换到10.13.0版本 nvu list 查看已安装版本

迁移学习和无监督学习是什么

迁移学习和无监督学习都是机器学习中的重要方法,它们在湍流速度场超分辨率重建任务中有着独特的作用。让我们通过简单的语言和例子来解释它们如何帮助解决这个问题。 1. 迁移学习: 迁移学习是一种方法,它利用一个领域(例如某种类…

R语言处理JSON文件

R语言处理JSON文件 引言 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript编程语言的一个子集,但JSON是独立于语言的文本格式&#xff0c…

网络--传输层协议--UDP

传输层作用:负责数据能够从发送端传输到接收端。 1、再谈端口号 端口号标识了一个主机上进行通信的不同的应用程序。 1.1、端口号划分范围 0 - 1023 : 知名端口号,HTTP、FTP、SSH等这些广为使用的应用层协议,他们的端口号都是固定的。 10234 - 65536:操作系统动态分配的…

金铲铲S13双城之战自动拿牌助手

金铲铲S13双城之战自动拿牌助手 基于python,pyautogui和金铲铲自带备战助手实现 B站视频演示效果 shuangcheng.py import timeimport pyautogui import datetimeprint(请关注您的分辨率,此程序需要配合thumbs_x_y.txt文件同时使用) print(简介&#x…

Spring Boot【四】

单例bean中使用多例bean 1.lookup-method方式实现 当serviceB中调用getServiceA的时候,系统自动将这个方法拦截,然后去spring容器中查找对应的serviceA对象然后返回 2.replaced-method:方法替换 我们可以对serviceB这个bean中的getServiceA…