怎样推断多个字段组成的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 笔记本 ...
随机推荐
- HDU 5552 Bus Routes(2015合肥现场赛A,计数,分治NTT)
题意 给定n个点,任意两点之间可以不连边也可以连边.如果连边的话可以染上m种颜色. 求最后形成的图,是一个带环连通图的方案数. 首先答案是n个点的图减去n个点能形成的树. n个点能形成的树的方案数比 ...
- Knockout.js(二):监控数组属性(Observables Arrays)
如果想发现并响应一个对象的变化,就应该使用监控属性(observables),如果想发现并响应一个集合的变化,就需要使用监控属性数组(observableArray).在很多情况下,它都非常有用,比如 ...
- jquery checkbox用法汇总
来源:http://www.jb51.net/article/75717.htm 1.全选 ? 1 2 3 $("#btn1").click(function(){ $(" ...
- [Codeforces #210] Tutorial
Link: Codeforces #210 传送门 A: 贪心,对每个值都取最大值,不会有其他解使答案变优 #include <bits/stdc++.h> using namespace ...
- AGC 018 A - Getting Difference
题面在这里! 天呐,我已经做了一天水题了mmp 养生最重要,恩. 首先发现最终序列里的元素肯定是 <= max 的,因为无论何时序列里都不会有负数,所以减的话不会变大(反向大只有>2*ma ...
- 【字符串哈希】【哈希表】Aizu - 1370 - Hidden Anagrams
给你两个4k长度的串,问你最长公共子串.两个子串相同被定义为所有字母的出现次数分别相同即可. 就枚举第一个串的所有子串,将字母出现的次数看作一个大数,进行哈希(双关键字),塞到哈希表里面.然后枚举第二 ...
- django2与1的差别和视图
django1与2路由的差别 在django1中的url在django2中为re_path django2中新增了path 1.from django.urls import path 2.不支持正则 ...
- [转]servlet配置中init-param
需要初始化的参数比如你的servlet里面有个属性为int total=0默认是0,你想让他初始时50则用init-param 给他赋值 init-param面对应的参数名和值,是给servlet在初 ...
- [转]Java程序员从笨鸟到菜鸟之(八十三)细谈Spring(十二)OpenSessionInView详解及用法
首先我们来看一下什么是OpenSessionInView? 在hibernate中使用load方法时,并未把数据真正获取时就关闭了session,当我们真正想获取数据时会迫使load加载数据,而 ...
- python多线程以及同步队列(转)
转自:http://www.w3cschool.cc/python/python-multithreading.html 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长 ...