SQL排序問題,高手請進,SQL 排序問題,高手請進

2022-02-25 04:30:56 字數 3861 閱讀 5602

1樓:匿名使用者

declare @a int

set @a = 3

select top 5 id from

((select id, 1 as flag from a where id not in

(select top (@a-1) id from a))union

(select top (@a-1) id, 2 as flagfrom a)) as table1

order by flag

sql2005測試正常

set @a=8時

id---89

1012set @a=3時

id---34567

2樓:匿名使用者

就拿你的一句話作為例子來講吧

當a=2的時候

查詢語句是 select top 5 id from tb where id>=a or id=1

這句的條件就是id=2或id>=2,那輸入的結果,肯定就是1.2.3.

4.5啊,不是說你寫在後面了,他就最後執行啊,你需要了解他的執行順序啊,如果你想要這樣的結果,我怕是1句sql語句不能搞定,我學藝不精,要是我寫,只能寫procdure.....

3樓:水嘆花

sql05中直接執行就能看見結果 sql2000自己修改下with處,不行再說

手動去修改@a,@b的值

其中@a相當於where id>=a

其中@b相當於or id=1.....or id=2 @b=2

指令碼如下:

if exists (select 1 from sysobjects where id = object_id('dbo.uu')and type= 'u')

drop table dbo.uu

create table uu(id int)

declare @i int

set @i=1

while(@i<=10)

begin

insert into uu values(@i)

set @i=@i+1

enddeclare @a int

declare @b int

--開始數字

set @a=4

--附加的條件數

set @b=2;

with 接分

as(select top (5-@b) row_number()over(order by id) as rownum,id from uu where id>=@a

union

select top (@b) (row_number()over(order by id)+5) as rownum,id from uu)

select id from 接分 order by rownum

sql 排序問題,高手請進 30

4樓:獨駕舟千里去

select id from tb where id>=x and id<=5

union

select id from tb where id

5樓:匿名使用者

sql語句後面加上 order by id desc 或者 order by id asc

關於sql語句的問題,高手請進

6樓:超塵離夢

①row_number:

row_number函式返回一個唯一的值,當碰到相同資料時,排名按照記錄集中記錄的順序依次遞增。

②as rownum

這個是定義一個欄位的別名,也就是說需要使用你前面row_number() over(" + orderby + ") 這一部分的時候,可以直接使用rownum來代替。

③as t1 as t2

這是定義一個表或者檢索結果集的別名,和上面的類似,也是在使用該表和檢索結果集的時候可以直接使用該別名。

例子的話,參見以下的**吧,特別是關於row_number部分的。

關於你的select * from (select t1.*, row_number() over(" + orderby + ") as rownum from這個地解釋:

row_number() over(" + orderby + ") as rownum 這一部分是指的將t1裡面的資料按照引數orderby指定的順序進行排序後,按照順序取得行號,併為其取別名rownum。

select t1.*, row_number() over(" + orderby + ") as rownum from .....

t1.*是說將t1表的所有欄位取出來,加上上面取得的行號,共同組成結果集。

外面的一層select * from ,是指的把上面的檢索結果作為子查詢,再次和另外的表連線等處理後,再次從中選擇部分欄位(*的話,是全部)。

7樓:

as的意思是將查詢到的值賦值給後面的別名 直接引用別名就可以了

比如select count(*) as (這裡隨意定義一個別名) from table

8樓:匿名使用者

row_number()一看就是個函式,英文意義就是行號

as 就是給物件 起個別名

9樓:匿名使用者

給你看下這個** 研究一下吧

sql的問題,高手請進 70

10樓:匿名使用者

使用sql資料庫嚮導匯入。在其中可以選擇某欄位到另一個資料庫的某欄位。

或者使用insert into table1 (value1,value2,。。。。)select insvalue1,insvalue2..... from table2

11樓:匿名使用者

1。先把需要的表備份出來,然後恢復到想要的資料庫上

2。得到和原來一樣的表。然後新建一張表(你將要的新表結構),根據要求寫出sql,insert into 新表名(新表欄位名)select 舊錶對應的欄位名 from 舊錶名 。

3。結束

經典sql 問題,高手請進! top 10% 的檢視

12樓:匿名使用者

select b.* from (select rownum as rn,a.* from (select * from hy_student order by score desc) a) b where b.

rn<= (select count(*) from hy_student)/10

解答詳情見:網頁連結

13樓:

我覺得前10%的學生是一個固定值,比如有一百個學生其值為10

相應的語句只要取出這個值的語句

14樓:匿名使用者

maybe you want:

select * from transcript where

grade in (select top 10 grade from transcipt order by grade desc)

15樓:匿名使用者

declare @p int

select @p=count(1) from transcriptset @p=@p/10

exec('select top '+ @p+' * from transcript order by grade desc')

關於SQL語句的排序問題中文和數字排序

你得分三個欄位 來分別儲蓄市區名 字母 數字然後語句用多欄位的排序select projectno from dual order by 市區名 字母 數字 asc select projectno from dual order by substring projectno 1,2 asc sub...

SQL語句問題,SQL語句問題

樓主在資料結構有問題,帳號相同是可以的,但其實兩者在關係並不是單單是帳號在關係,還有工號之間有關係,所以你的結構有點點問題,既然工號之間也是有關係的,那麼也應該提取出來,所以你的b表應該儲存為 三個欄位 賬號 收銀員 營業員 儲存內容 賬號 收銀員id 營業員id 那麼你想要的結果就很清晰了 sel...

SQL語句查詢問題,高手請現身,一個SQL語句查詢問題,高手請現身

因sql表沒有記錄號屬性,所以所謂第一行到第n行,在沒有給出排序條件的情況下,是不能確定的記錄集 所以,您需要給出排序條件或對錶按一定的欄位進行了索引,才能確定哪一條記錄是第幾行 比如,您是要按a排序,那不就是全部記錄嗎?就不需要查詢條件了 如果是按b排序或索引,即麼可以這樣求您的記錄集 selec...