sql-这个SQL语句什么意思啊?

问题描述

这个SQL语句什么意思啊?

select top 50 * from pagetest
where not exists
(select 1 from (select top 9900 id from pagetest order by id)a where a.id=pagetest.id)
order by id
pagetest是表名 a是别名吗? 要是别名的话怎么分的页啊?可以详细介绍一下嘛?大神

解决方案

select top 50 * from pagetest --取50条不在9900中的记录。
where not exists
(select 1 from
(select top 9900 id from pagetest order by id)a --按照id排序,取前9900记录,临时表名a
where a.id=pagetest.id) --如果a中的id和pagetest.id相同,则值为1,否则没值
order by id

解决方案二:

加我吧,大神 756922469

解决方案三:

不是a,表示括号中的子查询。
这个查询什么含义要看业务了,从本身看不出来。

解决方案四:

a是表示按id升序排列的前9900个id,这个查询是查询id不在前9900个的50个记录,即按id升序排列的第9901-9950条记录

解决方案五:

select top 50 * from pagetest
where not exists
(select 1 from (select top 9900 id from pagetest order by id)a where a.id=pagetest.id)
order by id
pagetest是表名 a是别名吗? 要是别名的话怎么分的页啊?可以详细介绍一下嘛?大神

a是pagetest的别名,因为有两个相同的表,所以用别名进行区分,分页是用的top 50来实现的(取前50名)

解决方案六:

这个sql意思是按id进行排序后,取9901-9950条数据(把不在前9900条数据的50条数据取出)

应该是用来实现分页的,你可以修改 50和9900这两个值,实现分页,前一个为一页显示的行数,后一个是控制多少页的数据

解决方案七:

select top 50 * --第三步:select top 50 * 显示50行 条件语句是不存在 第二步中的前9900行,如果表pagetest里面有9950
则如其他网 所说。没有9950行数据,则为空
from pagetest
where not exists
( select 1 --第二步:查看这个select 语句select 1 from a where a.id=pagetest.id 其中a表等于(第一步)
所以 这个条件肯定是相等的(行数如下top 9900) ; select 1 =9900 个1(前提是pagetest有那么多行)

                                         from (                    -- 第一步: 肯定先看最里面括号的语句 select top 9900 id from pagetest order id
                                                                                                                   --                这样应该懂吧?显示pagetest表中ID栏位的9900行数据
                                                                      select top 9900 id
                                                                                                                       from pagetest
                                                                                                                                order by id
                                                                                                                                )
                                                                                                                                a where a.id=pagetest.id
                                                                                                                                )
                                                      order by id

解决方案八:

如果没有第二个SELECT语句,那么是查询不到结果的, TOP 50 虽然显示的是50笔数据,但是实际行数依然是表的总行数
有第二个SELECT语句,可以查询到,相当于在创建一个50行的新表

时间: 2024-09-19 23:57:44

sql-这个SQL语句什么意思啊?的相关文章

SQL Server2005中用语句创建数据库和表

在SQL Server2005中用语句创建数据库和表: 具体示例如下: use master go if exists (select * from sysdatabases where name='Study') --判断Study数据库是否存在,如果是就进行删除 drop database Study go EXEC sp_configure 'show advanced options', 1 GO -- 更新当前高级选项的配置信息 RECONFIGURE GO EXEC sp_confi

SQL Server数据库管理常用的SQL和T-SQL语句

server|数据|数据库|语句 SQL Server 数据库管理常用的SQL和T-SQL语句  1. 查看数据库的版本 select @@version 2. 查看数据库所在机器操作系统参数 exec master..xp_msver 3. 查看数据库启动的参数 sp_configure 4. 查看数据库启动时间 select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1 查看数据库服务器名

SQL Server 数据库管理常用的SQL和T-SQL语句

server|数据|数据库|语句 1. 查看数据库的版本     select @@version   2. 查看数据库所在机器操作系统参数     exec master..xp_msver   3. 查看数据库启动的参数           sp_configure         4. 查看数据库启动时间           select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1  

Oracle中PL/SQL中if语句的写法介绍

以下是对Oracle中PL/SQL中if语句的写法进行了详细的分析介绍,需要的朋友可以过来参考下   复制代码 代码如下: /* If语句: 判断用户输入的数字. */ set serveroutput on --接收键盘输入 accept num prompt '请输入一个数字:'; declare   --将屏幕输入的数字付给变量   pnum number := # begin   if pnum = 0 then dbms_output.put_line('您输入的是0');   end

参数-SQL 四则运算优先级语句

问题描述 SQL 四则运算优先级语句 1+2[]*5[]/4[]-6[]=结果 首先呢中括号里面的是对前面那个数的备注,解释,没有作用.我们要建立一个存储过程,接收前台传入的这一整个参数'1+2[]*5[]/4[]-6[]',接着呢将中括号以及中括号中的备注去除,得出运算过程,接着根据加减乘除运算法则进行运算,返回最后值,也就是简单说写个存储过程,去掉[XXXX],然后得到1+2*5/4-6,然后按加减乘除运算优先级一步步算.请问在SQL Server中要如何写语句? 解决方案 oracleht

jsp中sql的insert语句问题

问题描述 jsp中sql的insert语句问题 下面这段话有什么问题,输入已有的用户名会执行"该用户名已存在",但是输入新的用户名显示注册成功但是数据库里没有新的记录,应该是赋值语句有问题,请问insert语句哪里错了呢 String username=request.getParameter("r_user"); String password=request.getParameter("r_password"); sql=conn.creat

java-一个纠结的sql分组查询语句

问题描述 一个纠结的sql分组查询语句 是这样的 数据库里有一张 宿舍用电表(宿舍号,时间,电表度数) dormitoryElectric(dormitory,time,electric) 里面存的是每个小时电表上的度数,那我想查询所有宿舍近7天的每天用电度数要怎么写. 效果大概是这样的: 宿舍1 第一天用电度数 第二天用电度数 第三天用电度数 ... 宿舍2 第一天用电度数 第二天用电度数 第三天用电度数 ... 第二天用电度数应该是第二天的最后一次电表度数减去第一天的最后一次电表度数 解决方

关于sql server查询语句的写法。

问题描述 关于sql server查询语句的写法. 怎样写一个查询语句select distinct ID from TrainTime order by ID select Station from TrainTime where S_No='1'order by ID select Stationfrom TrainTime where D_Time='-' order by ID 怎样把这3个查询语句写为一句啊,让查询查来的结果为这3列数据. 因为我想建一个表,为3列,列名为:列车车次.起

跪求大神给一个sql分类汇总语句

问题描述 跪求大神给一个sql分类汇总语句 10C 现有两张表:Dept:ID DName ParentDept1 总经办 02 行政部 13 企划部 1Leave:ID UserName Udept Uposition Lstart Lend Lstatus Lstype 1 张三 2 科员 2015-06-09 2015-06-10 2 12 李四 3 职员 2015-06-22 2015-06-25 3 23 王五 2 职员 2015-05-19 2015-05-22 3 2要求先按照Ud

sql-【SQL求助】用SQL Server查询语句中,IN 的使用问题。

问题描述 [SQL求助]用SQL Server查询语句中,IN 的使用问题. 我想查询一辆车在一个月内的记录.于是编写了如下代码: select * from 北京车辆能耗数据.dbo.北京朝批商贸股份有限公司 where ( [列 0] in ('京AC3537') and CAST ([列 2] as datetime)>'2013/11/1 00:00:00' and CAST ([列 2] as datetime)<'2013/12/1 00:00:00' ) order by CAS