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

数据库中in、on、with的用法及示例。,第1张

in

select from tab where field in ('A', 'B', 'C')

等价于select from tab where field = 'A' or field = 'B' or field = 'C'

on永在表连接的时候

select from a inner/left/right join b on axx = bxx

with用法:

创建一个表:

create table regr (pid integer,id integer, name char(20))

alter table regr alter id set not null add primary key(id)

insert into regr values(-1,1,'library'),(1,2,'news'),(2,3,'world news'),(2,4,'politics'),(2,5,'bussiness')

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

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

使用with得到数据树

WITH RPL (PID, ID, name) AS      

(SELECT ROOTPID, ROOTID, ROOTNameFROM regr ROOT      

WHERE ROOTPID = 8

UNION ALL    

SELECT CHILDPID, CHILDID, CHILDName

FROM RPL PARENT, regr CHILD

WHERE PARENTID = CHILDPID)

SELECT DISTINCT PID, ID, Name      

FROM RPL

ORDER BY PID, ID, Name

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

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

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

IN *** 作符允许我们在 WHERE 子句中规定多个值。

SQL IN 语法:

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1,value2,)

扩展资料:

1、IN 与 = ANY 等价,均表示,变量在(子查询)列表之中,即 a IN (table B) 表示 a = ANY Bb

2、NOT IN 与 <> ALL 等价,而不等于<> ANY,前两者均表示,变量不在(子查询)列表之中,即 a NOT IN (table B) 表示 a <> ALL Bb。而如果a <> ANY Bb,则只要任意一个b<>a就true了。

3、IN 与 EXISTS 的性能区别主要来自,IN 会编列子查询的每行记录,然后再返回,而EXISTS 则只要遇到第一个满足条件的记录就马上返回。

参考资料来源:百度百科-结构化查询语言

以上就是关于数据库中in、on、with的用法及示例。全部的内容,包括:数据库中in、on、with的用法及示例。、sql语句中in的用法、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9850461.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存