嵌套查询, 就是我主查询的 不是一个表, 而是另外一个查询
例如 SQL Server 2008 当中
我需要查询 某个表的 第 11行 到第20行的数据。
也就是翻页处理, 每页10行, 现在要查询第2页。
SELECT
TOP 10
top20
FROM
(
SELECT
TOP 20
FROM
表
ORDER BY
排序列 ASC
) AS top20
ORDER BY
排序列 DESC
内部的子查询, 是查询 表的, 查询 20行数据。
外部的主查询, 是查询子查询的, 从子查询的20行结果中,查询其中的10行
你的查询当然会有问题:用等于号的话,后面的值必须是一个标量(所谓标量就是只能有一个值,或者没有值)。而你的查询中SNO等于之后的子查询返回的明细是有多个记录,故会出错(如果无符合条件的记录,或者只有一个记录那么也是可以执行的)。
从你的查询来看,似乎只需要DEGREE在70和90之间的SNO记录,那么直接用子查询就好了:
select SNO from score where degree between 70 and 90;
如果想要sutdent的资料,那么内连接子查询:
select sfrom student s
inner join (select distinct SNO from score where degree between 70 and 90) t on sSNO = tSNO;
SELECT CCOMPANYNAME,AUSERID,ALOGINNAME,BDEPARTMENTID,APASSWORD
FROM USER A
LEFT JOIN DEPARTMENT B
ON ADEPARTMENTID = BDEPARTMENTID
LEFT JOIN COMPANY C
ON BCOMPANYID = CCOMPANYID
WHERE ALOGINNAME LIKE 'Tony%'
完全可以的,你不想用while循环也完全可以做到。
我给你大致说一下思路:
打开数据库获得记录集,之后按要求定义二维数组
假定数组为:MM_Array(X,Y)
那么,X指定字段,Y指定记录。
用两个For循环嵌套,就可以把Y条记录(每条记录取前X字段)的值存到数组中了。
……PS:为什么While循环不是很好?用好了哪个都一样。
selectfromphome_ecms_memberprowhereuseridin(selectuseridfromphome_ecmswherechecked
--存储过程效率更高些这个写的不好。一般都不in查询因为他的效率特别低。而且不需要全部字段的话,尽量就不用select来查询。慢慢努力哦!
以上就是关于数据库中什么时候用嵌套查询全部的内容,包括:数据库中什么时候用嵌套查询、数据库里的一个嵌套查询问题、三张表的数据库嵌套查询问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)