‘壹’ sql:求大表前N行求和,返回计算结果,和第N行的id
这表就三列,没有必要建索引。
insert into points(user_id, points) select user_id,sum(amount) from trans group by user_id;这个效率应该是最好的,一次干完所有工作。
‘贰’ sql 更新 前几行
sql 更新 前几行
最好加一列ID identity(1,1),避免同一列有相同的值,而导致更新错了。update tableset 字段=处理结果from tablewhere id <=第几行
‘叁’ 如何让sql语句返回第二行 第三行
只返回第2、3行代码如下,假设你的表中有ID字段是自动编号类型的,可用下面的方法:select top 2 * from admin where id not in (select top 1 id from admin)返回除了第1条记录以下的记录:select * from admin where id not in (select top 1 id from admin)
‘肆’ sql server 按某一个字段提取前几行
sqlserver提取前几行可用top来实现。
如sale表中有如下数据:
‘伍’ sql语句怎样显示数据库前三条记录
select * from 表名 where id<4 order byid desc才对,四楼的只能得两条数据
select top 3 * from 表名 order by id desc
‘陆’ sql server中有一个表,其中相同id对应许多行,如何取相同id中的前三行数据
--先写一个函数,输入name,得到1和0(是否前三行)
createfunctionGetTop3(@idint,@namevarchar(100))
returnbit
as
begin
declare
@returnbit,
@getName1varchar(100),
@getName2varchar(100),
@getName3varchar(100)
selecttop1@getName1=namefrom表名whereid=@id
selecttop2@getName2=namefrom表名whereid=@id
selecttop3@getName3=namefrom表名whereid=@id
return(casewhen@name=@getName1or@name=@getName2or@name=@getName3then1else0end)
end
--函数建好了之后就可以在查询里用了:
select*from表名whereGetTop3(id,name)>0
‘柒’ SQL 更新前几行数据
可用row_number来解决。
如student表:
姓名 年龄
张三 20
李四 15
王五 22
赵六 21
孙七 18
杨八 19
刘九 24
现在要按年龄从大到小取出前5条数据的话,可用如下语句:
1
2
3
4
select 姓名,年龄
from
(select 姓名,年龄,row_number() over (order by 年龄 desc) as rn from student) t
where rn<=5;
‘捌’ SQL查询,如何查询一个表中第三行,第三列的数据
可以使用col_name(object_id('tablename'),3)得到第三列的名称,然后再使用列的名称进行查询。不过这样就不能直接写成SQL了,需要构造动态SQL语句。行号应该也可以使用类似方法得到,具体什么函数记不清了。
‘玖’ sqlite查询前三行,没有标识列。sql怎么写
也不知道你要使用的是哪种数据库。那就给你介绍下在ms sqlserver和oracle中的查询方法。
在ms sqlserver(也就是微软的数据库,如sql server2005)中可以使用top来查询前三行。在ms sqlserver中无论你是否将查询到得结果按照每一个字段(如学生的年龄)进行了降序或升序(在使用order by的时候默认为升序)排序,都可以查询到你想要的最大的前三行或最小的前三行。在ms sqlserver中查询前多少行是比较简单的。
但是,在oracle中并没有top,那么我们是不是就不能查询到前三行了呢?当然不是!在oracle中有一个伪列(如果你对伪列不太清楚请网络一下),我们可以再查询的语句后面添加一个条件 where rownum<=3。但是这种方法是适用于没有使用orderby的查询语句,一旦查询语句中使用了order by,那么rownum也会随之放生变化;如果想要查询出使用了order by的结果中的前三行,就需要用到子查询。例如:我们要查询出scott.emp中工资最高的员工的姓名和工资,就需要分成一下几步:
第一步:先查询出scott.emp中员工的姓名和工资,然后按照工资降序排列,并且将查询到的结果看做是一张新表
第二步:从新表中查询前三行数据;
select * from (select enmae,sal from emp order by sal desc) where rownum <= 3。
以上观点不一定正确,如有错误请向其他人请教!
‘拾’ 数据库读取前几条记录的SQL语句大全
取前10条记录的sql语句写法:
1、access:
select top (10) * from table1 where 1=1
2、db2:
select column from table where 1=1 fetch first 10 rows only
3、mysql:
select * from table1 where 1=1 limit 10
4、sql server:
读取前10条:select top (10) * from table1 where 1=1
读取后10条:select top (10) * from table1 order by id desc
5、oracle:
select * from table1 where rownum<=10
(10)sql前三行扩展阅读
PL/SQL的流程控制语句,包括如下三类:
l 控制语句: IF语句
l 循环语句: LOOP语句, EXIT语句
l 顺序语句: GOTO语句, NULL语句
条件语句:
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
END IF;
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
ELSE
其它语句
END IF;
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
ELSIF < 其它布尔表达式> THEN
其它语句
ELSIF < 其它布尔表达式> THEN
其它语句
ELSE
其它语句
END IF;