SQL中如何更新某表中某欄位按另外欄位排序的前N條資料

2021-05-22 12:35:06 字數 6174 閱讀 8423

1樓:匿名使用者

update a set priority=0 where id in (select top @count id from a order by priority desc)

sql排序方式要根據另一個表的某個欄位排序怎麼實現?

2樓:匿名使用者

可以通過兩個表的關係,然後通過欄位關聯的形式排序。

sql:select t1.* from tablename1 t1, tablename2 t2 wehere t1.

id=t2.id order by t2.name;

解釋:實際上上面語句會通過 tablename2表的name欄位先排序表tablename2資料,之後會通過id欄位關聯後,讀取出id存在於tablename2表中存在的tablename1表的資料。

備註:上面表中的id欄位的值肯定有相同的,如tablename1和 tablename2 表中id欄位都存在值「1」,才可以有結果輸出。如果兩個表都沒關聯的話,無法實現。

3樓:匿名使用者

加個標記,等著看結果...

4樓:匿名使用者

select a.* from a left join b on a.size=b.size order by b.size

sql 批量更新某一排序型欄位,數值遞加

5樓:匿名使用者

一點想法:

1、寫個function,返回排序,這個函式把id作為引數。

2、1~n可以是不連續的。

sql如何更新資料庫指定條件的前幾條資料

6樓:匿名使用者

可用row_number來解決。

如student表:

姓名      年齡

張三       20

李四       15

王五       22

趙六       21

孫七       18

楊八       19

劉九       24

現在要按年齡從大到小取出前5條資料的話,可用如下語句:

select 姓名,年齡

from

(select 姓名,年齡,row_number() over (order by 年齡 desc) as rn from student) t

where rn<=5;

得到的結果是:

姓名      年齡

劉九       24

王五       22

趙六       21

張三       20

楊八       19

7樓:

若該欄位值唯一:

update 表 set 欄位=新值 where 欄位 in (select top 10 欄位 from 表);

如何update某個欄位,讓它等於另一個欄位的某幾位!

8樓:匿名使用者

update 表

set a=中國+substring(a,5,len(a)-5) 同一個表

update 表 set a=中國+substring(a,5,len(a)-5) from不同表 where 表1和表2的關聯

9樓:換暱稱很難呀

用欄位擷取函式不就完了?下次最後說一下你倒是是什麼資料庫,要不真不好寫這語句。資料庫不同有時候很有差異的。我就寫一個sql server的了。

update 表名

set a=substring ( expression , start , length ) ,b='中國'

where 條件

10樓:匿名使用者

可以使用mid函式

select mid(a,1,5) from 表名 /*從a欄位第一個字元開始取出5個字元*/

然後update就可以了

11樓:逐鹿傳說

update 表 set b=『中國』 where a like 『42988%』

如何根據mysql資料庫中的某一個欄位進行排序?

12樓:time嵐憶

先把分類全取出來,並隨機排序,取排在第一個分類。

例如:西裝

然後查詢的時候 order by (category='西裝') desc,category 即可實現要求。

mysql是一種開放源**的關係型資料庫管理系統(rdbms),mysql資料庫系統使用最常用的資料庫管理語言--結構化查詢語言(sql)進行資料庫管理。

mysql這個名字,起源不是很明確。一個比較有影響的說法是,基本指南和大量的庫和工具帶有字首「my」已經有10年以上,而且不管怎樣,mysql ab創始人之一的monty widenius的女兒也叫my。這兩個到底是哪一個給出了mysql這個名字至今依然是個迷,包括開發者在內也不知道。

mysql的海豚標誌的名字叫「sakila」,它是由mysql ab的創始人從使用者在「海豚命名」的競賽中建議的大量的名字表中選出的。獲勝的名字是由來自非洲史瓦濟蘭的開源軟體開發者ambrose twebaze提供。根據ambrose所說,sakila來自一種叫siswati的史瓦濟蘭方言,也是在ambrose的家鄉烏干達附近的坦尚尼亞的arusha的一個小鎮的名字。

mysql,雖然功能未必很強大,但因為它的開源、廣泛傳播,導致很多人都瞭解到這個資料庫。它的歷史也富有傳奇性。

sql 按欄位指定值排序

13樓:匿名使用者

這個需要在排序語句中使用條件判斷

例如:表【table_temp】中列【col1】為字元,屬性為varchar(10),排序時需要按照b、a、c的順序顯示,則可按照以下sql語句:

select

*from

table_temp

order by

case

when col1='b' then 1

when col1='a' then 2

when col1='c' then 3end

14樓:匿名使用者

在mssql支援case,使用以下語句實現select 表1.id, 表1.n

from 表1

order by case n when 'a2' then 1 when 'a1' then 2 when 'a3' then 3 end;

在access中使用iif來實現,如下:

select 表1.id, 表1.n

from 表1

order by iif(n='a2',1,iif(n='a3',2,3));

可參考access幫助檔案中的

access > 篩選和排序 > 按自定義次序對記錄排序

15樓:沉默使用者

order by 字句中使用case

select *

from table1

order by case a1 when 'a2' then 1 when 'a3' then 2 when 'a1' then 3 end

16樓:匿名使用者

你可以加上一個計算列,將它轉換成可排序的,比如在oracle中可依這樣

select table1.*,decode(table1.a1,'a2' ,1,'a3',2,'a1',3,0)xx from table1 order by xx

17樓:匿名使用者

select * from dbo.table1where a1= 'a1'

union

select * from dbo.table1where a1<> 'a1'

order by a1 desc試一下

18樓:匿名使用者

在select語句後面加上 order by a1 desc是降序

order by a1 asc是升序;

sql如何將表中某一欄位值更新為該行記錄的行號?

19樓:匿名使用者

更新表中一列的資料自增

sql 更新一個表中的n條記錄,讓這n條記錄的同一欄位從一個值(比如600)開始自增1.

不能在資料庫中設定自增

20樓:匿名使用者

這個操作的本意是什麼?

你的行號是以資料表現有資料為準,還是其他的?

我猜測你應該是主鍵id設定的為自增欄位,期間對資料又進行過刪除操作,後面想對資料進行分頁查詢時,想通過記錄的行號來查詢資料,如果是這樣的話,這樣的更新操作作用不大,如果是其他用途的話,sql2005之後的版本對於分頁查詢有一個 row_number(order by 欄位名xx) 的系統函式,它在查詢資料時會對查詢的資料結果進行計數(也就是行號),你可以寫一個儲存過程,便利資料表的所有資料,利用這個函式的值,把他複製給你想要儲存行號的欄位就可以了。

21樓:幹好每一天

用 update 語句更新下就可以了,,只是在更新的時候,確定好對應的條件。

22樓:郭妮寶寶

declare @i int

set @i = 0

update tablename set columnname=@i,@i=@i+1

順序+1就可以了

sql 更新一個表中的n條記錄,讓這n條記錄的同一欄位從一個值(比如600)開始自增1,十分急。

23樓:匿名使用者

還是先建測試表:

create table test_niu (id int,

val varchar(10)

);go

測試資料:

insert into test_niu (val)select 'a'

union all select 'b'

union all select 'c'

union all select 'd'

union all select 'e'

union all select 'f'

union all select 'g'

union all select 'h'

union all select 'i'

union all select 'j'

union all select 'k'

union all select 'l';

go建立個臨時的 view

create view temp_view asselect

row_number() over(order by (select 1)) as no,

id,val

from

test_niu;

go更新那個 id 從 600 開始自增。

update

temp_view

setid = no + 600;

檢視結果:

1> select * from test_niu;

2> go

id val

----------- ----------601 a

602 b

603 c

604 d

605 e

606 f

607 g

608 h

609 i

610 j

611 k

612 l

(12 行受影響)

24樓:匿名使用者

在已建好的表更新麼,如果是就定義變數

declare @var int

set @var=600

while @var<600+n

begin

update 表 set 列=@var whereset @var=@var+1

end或把n條記錄取出到臨時表更新再插入回

oracle怎麼更新表中的某欄位的值

通過update語句將a表的來某列自值修改為b表中的指定列的值時,所用的sql語句在oracle和sql server中是不一樣的,如下 oracle中的語句 update a set a.col1 select b.col1 from b where a.key b.key and 其它限制 可選...

oracle中查詢某欄位不為空的sql語句怎麼寫

sql中判斷非空不能用等號,因為null在sql中被看作特殊符號,必須使用關鍵字 is和not select from a where info is not null select id,info from 表名 where info is not null select from a where...

sql如何把表名中包含某字元的表刪除

以下儲存過程實測通過,不過,使用要小心,很危險,因為會刪除一批表!create procedure deletetables str varchar 100 as declare name varchar 100 select name as 請看一下所有刪除的表 from sysobjects w...