首页数据库数据库 in(数据库in的用法)

数据库 in(数据库in的用法)

编程之家2023-10-21113次浏览

大家好,今天来为大家分享数据库 in的一些知识点,和数据库in的用法的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

数据库 in(数据库in的用法)

数据库中in的用法

数据库中in的用法的用法你知道吗?下面我就跟你们详细介绍下数据库中in的用法的用法,希望对你们有用。

数据库中in的用法的用法如下:

IN:确定给定的值是否与子查询或列表中的值相匹配。

IN关键字使您得以选择与列表中的任意一个值匹配的行。

SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERECategoryID IN(1, 4, 5)

IN关键字之后的项目必须用逗号隔开,并且括在括号中。

数据库 in(数据库in的用法)

NOT IN:通过 NOT IN关键字引入的子查询也返回一列零值或更多值。

以下查询查找没有出版过商业书籍的出版商的名称。

SELECTpub_name FROM publishers WHERE pub_id NOT IN(SELECT pub_id FROM titles WHEREtype='business')

使用 EXISTS和 NOT EXISTS引入的子查询可用于两种集合原理的操作:交集与差集。两个集合的交集包含同时属于两个原集合的所有元素。

差集包含只属于两个集合中的第一个集合的元素。

EXISTS:指定一个子查询,检测行的存在。

数据库 in(数据库in的用法)

SELECT DISTINCT pub_name FROM publishers WHERE EXISTS(SELECT*FROM titles WHERE pub_id= publishers.pub_id AND type=

'business')

SELECTdistinct pub_name FROM publishers WHERE pub_id IN(SELECT pub_id FROM titlesWHERE type='business')

两者的区别:

EXISTS:后面可以是整句的查询语句如:SELECT*FROM titles

IN:后面只能是对单列:SELECTpub_id FROM titles

NOT EXISTS:

例如,要查找不出版商业书籍的出版商的名称:

SELECTpub_name FROM publishers WHERE NOT EXISTS(SELECT* FROM titles WHERE pub_id=publishers.pub_id AND type=

'business')

下面的查询查找已经不销售的书的名称:

SELECT titleFROM titles WHERE NOT EXISTS(SELECT title_id FROM sales WHERE title_id=titles.title_id)

例子:

//验证有发布产品的公司个数

select id,name from company where exists(select* from product where comid=company.id)

select id,name from company where id in(select comid from product)

//验证没有发布产品的公司个数

select id,name from company where not exists(select* from product where comid=company.id)

select id,name from company where id not in(select comid from product)

数据库in的用法

数据库in的用法的用法你知道吗?下面我就跟你们详细介绍下数据库in的用法的用法,希望对你们有用。

数据库in的用法的用法如下:

MySQL IN语法

IN运算符用于 WHERE表达式中,以列表项的形式支持多个选择,语法如下:

WHERE column IN(value1,value2,...)

WHERE column NOT IN(value1,value2,...)

当 IN前面加上 NOT运算符时,表示与 IN相反的意思,即不在这些列表项内选择。

IN使用实例

选取 uid为 2、3、5的用户数据:

SELECT* FROM user WHERE uid IN(2,3,5)

返回查询结果如下:

uid

username

password

email

regdate

2小明 a193686a53e4de85ee3f2ff0576adf01 xiao@163.com 1278063917

3 Jack 0193686a35e4de85ee3f2ff0567adf490 jack@gmail.com 1278061380

5 5idev a193686a53e4de85ee3f2ff0576adf01 5idev@5idev.com 1291107029

IN子查询

更多情况下,IN列表项的值是不明确的,而可能是通过一个子查询得到的:

SELECT* FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)

在这个 SQL例子里,我们实现了查出所有状态为 0的用户(可能是被禁止)的所有文章。首先通过一个查询得到所有所有 status=0的用户:

SELECT uid FROM user WHERE status=0

然后将查询结果作为 IN的列表项以实现最终的查询结果,注意在子查询中返回的结果必须是一个字段列表项。

IN运算符补充说明

IN列表项不仅支持数字,也支持字符甚至时间日期类型等,并且可以将这些不同类型的数据项混合排列而无须跟 column的类型保持一致:

SELECT* FROM user WHERE uid IN(1,2,'3','c')

一个 IN只能对一个字段进行范围比对,如果要指定更多字段,可以使用 AND或 OR逻辑运算符:

SELECT* FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')

使用 AND或 OR逻辑运算符后,IN还可以和其他如 LIKE、>=、=等运算符一起使用。

关于 IN运算符的效率问题

如果 IN的列表项是确定的,那么可以用多个 OR来代替:

SELECT* FROM user WHERE uid IN(2,3,5)

//等效为:

SELECT* FROM user WHERE(uid=2 OR aid=3 OR aid=5)

一般认为,如果是对索引字段进行操作,使用 OR效率高于 IN,但对于列表项不确定的时候(如需要子查询得到结果),就必须使用 IN运算符。另外,对于子查询表数据小于主查询的时候,也是适用 IN运算符的。

InSql是什么类型的数据库

InSQL是世界上第一种面向工厂的高性能的实时关系型数据库。它将关系型数据库的功能、灵活性与实时数据库的高速、压缩集成于同一产品以适用于工厂生产层管理。InSQL集成了微软公司的MS SQL Server并对其进行了的扩展,使其不仅具有高速的数据采集速度,高效数据压缩和数据存储等实时数据库性能,而且可以集成事件、概要、生产和配置等一般存于关系型数据库中的工厂数据。数百个客户端应用可访问到全部的工厂信息,使其在工业软件领域具有了最好的开放性和灵活性。由于WW有世界上最好的图控软件InTouch及I/O Server,使它与工厂自动化系统有着更紧密的联系。

数据库中in、on、with的用法及示例

in

select*fromtabwherefieldin('A','B','C')

等价于select*fromtabwherefield='A'orfield='B'orfield='C'

on永在表连接的时候

select*fromainner/left/rightjoinbona.xx=b.xx

with用法:

创建一个表:

createtableregr(pidinteger,idinteger,namechar(20))

altertableregralteridsetnotnulladdprimarykey(id)

insertintoregrvalues(-1,1,'library'),(1,2,'news'),(2,3,'worldnews'),(2,4,'politics'),(2,5,'bussiness')

(2,6,'science'),(2,7,'technology'),(1,8,'sports'),(8,9,'local'),(8,10,'collegiate'),(8,11,'')

(9,12,'soer'),(10,13,'soer'),(11,14,'soer'),(9,15,'football'),(10,16,'football'),(11,17,'football'

使用with得到数据树

WITHRPL(PID,ID,name)AS

(SELECTROOT.PID,ROOT.ID,ROOT.NameFROMregrROOT

WHEREROOT.PID=8

UNIONALL

SELECTCHILD.PID,CHILD.ID,CHILD.Name

FROMRPLPARENT,regrCHILD

WHEREPARENT.ID=CHILD.PID)

SELECTDISTINCTPID,ID,Name

FROMRPL

ORDERBYPID,ID,Name

RPL作为一个具有以下三列的虚拟表:PID、ID和name。

WITH子句内的第一个SELECT语句是初始化表。它只执行一次。它的结果形成虚拟表的初始内容以作为递归的种子。在上面的示例中,种子是PID为8的一行或多行。

第二个SELECT语句执行多次。将种子作为输入(JOIN中的辅助表)传递给第二个SELECT语句以产生下一个行集合。将JOIN的结果添加(UNIONALL)到虚拟表的当前内容中,并放回到其中以形成用于下一次传递的输入。只要有行产生,这个过程就会继续。

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

数据库原理与实践(数据库系统原理(实践)是什么意思)中国专利文献数据库?中国的专利数据库有哪些