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

 我来答
猪八戒网
2023-04-26 · 百度认证:重庆猪八戒网络有限公司官方账号
猪八戒网
猪八戒网(zbj.com)创建于2006年,现已形成猪八戒网、天蓬网和线下八戒工场的“双平台+一社区”服务模式,是中国领先的人才共享平台。
向TA提问
展开全部

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)到虚拟表的当前内容中,并放回到其中以形成用于下一次传递的输入。只要有行产生,这个过程就会继续。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式