怎样推断多个字段组成的keyword在另外一张表中是否存在
怎样推断多个字段组成的keyword在另外一张表中是否存在
老帅(20141107)
1.首先推断一个keyword在另外一张表中是否存在非常easy!
SELECT * FROM a
WHERE a.ID
IN
(
SELECT b.ID
FROM b
)
2.假设推断的keyword有多个字段构成怎么办呢?
你不能在IN中使用多个字段。例如以下查询:
SELECT * FROM a
WHERE (a.ID1, a.ID2)
IN
(
SELECT b.ID1, b.ID2
FROM b
)
这不会正常工作,违反了SQLSERVER标准。
3.要解决这一问题。能够用EXISTS来取代IN!
SELECT * FROM a
WHERE EXISTS
(
SELECT NULL
FROM b
WHERE a.ID1 = b.ID1
AND a.ID2 = b.ID2
)
4.值得注意的是。这仅适用于IN,而非NOT IN!
NOT IN与NOT EXISTS在处理空值的方式上略有不同。
SELECT *
FROM a
WHERE (a.ID1, a.ID2) NOT IN
(
SELECT b.ID1, b.ID2
FROM b
)
这不会正常工作,违反了SQLSERVER标准。
要模仿NOT IN的查询例如以下:
我们必须使用下面查询:
SELECT *
FROM a
WHERE NOT EXISTS
(
SELECT NULL
FROM b
WHERE a.ID1 = b.ID1
AND a.ID2 = b.ID2
)
AND NOT EXISTS
(
SELECT NULL
FROM b
WHERE b.ID1 IS NULL
OR b.ID2 IS NULL
)
第二个谓词确保b在ID1和ID2中不会有空值,不论什么这种值都会让原始查询不会返回结果!
怎样推断多个字段组成的keyword在另外一张表中是否存在的更多相关文章
- 将mysql中的一张表中的一个字段数据根据条件导入另一张表中
		
添加字段:alter table matInformation add facid varchar(99) default ''; 导入数据:update matInformation m set ...
 - MySQL中设置同一张表中一个字段的值等于另一个字段的值
		
今天遇到了一个需求,我在一张表中新增了一个字段,因为这张表以前已经有很多数据了,这样对于以前的数据来说,新增的这个字段的值也就是为该字段的默认值,现在需要将新增的这个字段添加上数据,数据来源为同表的另 ...
 - EFCore某张表中获取某几个字段
		
目录 EFCore某张表中获取某几个字段 1.背景 2.法一:linq 2.1 使用Select方法 2.2 使用ForEach方法 2.3 其他参考代码 3.法二:IQueryble 3.1 参考例 ...
 - MySQL 查询多张表中相同字段的最大值
		
MySql : 有N张表,N未知,每张表都有一个字段(id),每张表的字段结构不完全一样,如何查询所有表里面所有id的最大值?如下图所示: 对上面三张表进行操作的话,结果应该为:9 SQL语句: se ...
 - 关于如何修改一张表中所有行与选定字段的同sql多行语句的添加方法
		
利用Excel以及word文档进行操作 将表的字段以及数据全部放入Excel表中并保存. 在word表中将写好的sql语句放入文档,利用邮件--选择收件人--使用现有列表--(选择之前做好的Excel ...
 - [oracle]删除一张表中重复数据,保留其id字段最小的sql
		
1.表数据结构如下 select * from test t , 'jerry'); , 'jerry'); , 'jerry'); , 'tom'); , 'tom'); , 'jake'); , ...
 - ms_sql 触发器记录表字段数据变化的日志  -针对一张表操作
		
create table sto (id int not null, -- 主键字段 de datetime -- 被跟踪的字段 constraint pk_sto primary key(id)) ...
 - mysql如何查询一个字段在哪几张表中
		
SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME = 'xxx' ; xxx替换成需 ...
 - sql一张表中两个字段指向同一个外键
		
在项目开发中遇到这么一个例子,首先产品表 tb_product ----------------------------- id name 1 手机 2 电脑 3 笔记本 ...
 
随机推荐
- 洛谷P3941入阵曲
			
题目传送门 这道题也是今年湖南集训队Day8的第一题,昨天洛谷的公开赛上又考了一遍,来发个记录(其实是因为五月天,另外两道题分别是将军令和星空,出这次题目的人肯定同为五迷(✪㉨✪)) 话不多说.先理解 ...
 - python脚本实现ipv6的ddns功能
			
话说在国家的推动下,ipv6地址已经开始优先在三大运营商推广,我自己家用的就是联通宽带100M光纤入户.有一次,不经意间发现,我们的光猫竟然获取到了ipv6地址,于是我开始浮想联翩. 说干就干,我先是 ...
 - Codeforces Round #425 (Div. 2) Misha, Grisha and Underground(LCA)
			
Misha, Grisha and Underground time limit per test 2 seconds memory limit per test 256 megabytes inpu ...
 - Spring中的设计模式2
			
Spring设计模式分析 工厂模式和单态模式 工厂模式:可以将java对象对象的调用者从被调用者的实现逻辑中分离.调用者只关心被调用者必须满足的某种规则,这种规则我们看做是接口,不必关心实例的具体 ...
 - 【BZOJ 4571】【SCOI 2016】美味
			
http://www.lydsy.com/JudgeOnline/problem.php?id=4571 这道题因为有加法,不能像可持久化trie那样每次判断只判断一个子树,而是在主席树上查询\(\l ...
 - [BZOJ3238][AHOI2013]差异(后缀数组)
			
求和式的前两项可以直接算,问题是对于每对i,j计算LCP. 一个比较显然的性质是,LCP(i,j)是h[rk[i]+1~rk[j]]中的最小值. 从h的每个元素角度考虑,就是对每个h计算有多少对i,j ...
 - 【20181024T3】小C的宿舍【分治】
			
题面 [错解] 好像就是\(|i-j|+|a_i - b_i|\)唉 嗯开始都加i-1,跑一遍,1~(i-1)加1,i~n 减1,线段树维护. 过样例了呢 哎大样例怎么多了那么多啊 跑了个暴力,多得更 ...
 - insert失败自动执行update(duplicate先insert)
			
例如:有一张表 字段有 id主键自增,或者唯一索引:datetime时间 name名字 INSERT INTO TABLE (id,datetime) VALUES (1,1440000000), ...
 - CentOS 6.9下KVM虚拟机通过virt-clone克隆虚拟机(转)
			
一.virt-clone概述 1.virt-clone作用简介 virt-clone主要是用来克隆kvm虚拟机,并且通过Options.General Option.Storage Configura ...
 - Linux设备文件简介
			
转:http://www.360doc.com/content/11/0418/00/5087210_110410837.shtml 版权声明 本 文作者是一位自由软件爱好者,所以本文虽然不是软件,但 ...