似乎用游标有点大才小用了。
新建表来测试即可
CREATE DATABASE test;USE test;
CREATE TABLE test(
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT
);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
INSERT INTO test VALUES(NULL);
DELETE语句:
DELETE FROM test WHERE (id%2)=1;SELECT FROM test;
效果:
通过查询语句select from user where id=1
我不知道你这个username指的是不是字段,如果是要取出表中某个字段的值。
可以通过select 字段名1,字段名2 from user where id=1。
-- MS sql server2005以上,ORACLE
select from (
select row_number() over ( order by starttime asc) as rownum, from steriworkrecord
where starttime between '2013-11-1' and '2013-12-31'
) a
where rownum between 2 and 10
-- 注意( order by starttime asc)是你排序的方式asc升序,desc降序
-- ORACLE还可以
select from (
select rownum as n, from steriworkrecord
where starttime between '2013-11-1' and '2013-12-31'
) a
where an between 2 and 10
-- MYSQL,postgreSQL似乎只能标量子查询
SELECT FROM (
SELECT a,(
SELECT count() FROM steriworkrecordb WHERE bID<= aID) AS n
from steriworkrecorda
) ts
where tsn between 2 and 10
-- 注意bID<= aID 其中ID换成你的主键名称
行号,是指在一定顺序的记录中排列的名次数。
在sql中,如果没有排序,记录顺序是不一定的,
所以,也就不能确定行号(这叫已知条件不足吧)。
但是您如果告诉了要按什么顺序排列,就可以很简单地求出行号。
比如按您给出的两列col1,col2排序,就可以这样求行号:
select
行号=(select
count(1)
from
tablename
a
where
acol110000+acol2<=tablenamecol110000+tablenamecol2),
from
tablename
order
by
col1,col2
--PL/SQL块形式的:
DECLARE
i NUMBER;
nj NUMBER := 0;
no NUMBER := 0;
BEGIN
FOR i IN 1 100 LOOP
IF MOD(i, 2) = 1 THEN
nj := nj + i;
ELSE
no := no + i;
END IF;
END LOOP;
dbms_outputput_line('奇数和:' || nj);
dbms_outputput_line('偶数和:' || no);
END;
/
--一句话的:
SELECT SUM(CASE
WHEN MOD(rownum, 2) = 1 THEN
rownum
END) 奇数和,
SUM(CASE
WHEN MOD(rownum, 2) = 0 THEN
rownum
END) 偶数和
FROM dual
CONNECT BY rownum <= 100;
弄个循环做
我写的是sqlserver哦 你oracle自己稍微修改下
#开头的是临时表
@开头的是变量
select id = identity(int,1,1),币种,金额(本币),金额(外币)
into #temp
from table
-- 给这个表做个自增长列作为主键 如果他本来有主键就不需要了
declare @a int, @n int, @type varchar(5)
-- 作用分别是: 自变量, 循环终止标志位, 本外币
set @a = 1
-- 自变量初始值
set @n = (select count() from #temp)
-- 终止标志位为总记录条数
create table #result(
币种 varchar(5),
金额 money)
-- 存放结果
while @a<= @n
begin
set @type = (select 币种 from #temp where id=@a)
-- 记录币种
if @type = '001'
-- 本币
begin
insert into #result
select 币种,金额(本币)
from #temp
where id=@a
end
else
-- 外币
begin
insert into #result
select 币种,金额(外币)
from #temp
where id=@a
-- 先插入这条记录的币种,外币金额
insert into #result
select '001',金额(本币)
from #temp
where id=@a
-- 再插入一条币种为'001',金额为这条记录的本币金额的记录
end
@a = @a + 1
-- 自变量增加1 指向下一条记录
end
什么数据库\x0d\如果是 Oracle 或者 SQL Server 的话。 可以\x0d\\x0d\SELECT\x0d\ \x0d\FROM\x0d\(\x0d\ SELECT ROW_NUMBER() OVER( ORDER BY 排序的字段 ) AS 序号\x0d\ 表\x0d\ FROM\x0d\ 表\x0d\) tmp\x0d\WHERE\x0d\ tmp序号 = 12345\x0d\\x0d\如果是 MySQL 的话, 直接\x0d\SELECT FROM 表 LIMIT 12344, 1\x0d\注:\x0d\LIMIT 接受一个或两个数字参数。\x0d\参数必须是一个整数常量。\x0d\如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,\x0d\第二个参数指定返回记录行的最大数目。\x0d\初始记录行的偏移量是 0(而不是 1)
update 表名 set J=((case when a%2=0 then 0 else a end )+(case when b%2=0 then 0 else b end )+(case when c%2=0 then 0 else c end ))
select from 表名
以上就是关于sql 使用游标来删除表中奇数行的记录全部的内容,包括:sql 使用游标来删除表中奇数行的记录、如何用SQL语句取出数据库中的特定一条数据、sql查询后的语句如何获取行数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)