求一條SQL語句,查出表裡的資料同時判斷如果不符合要求直接改成符合要求的,在資料庫sql視窗能執行的

時間 2021-06-26 19:05:46

1樓:真靈級存在

比如有表 a

學生名字 成績

張 90

王 80

李 30

趙 50

你可以用update來改表裡的資料,比如將所有成績小於60的記錄的成績修改為60:

update a

set [成績]=60

when [成績] <60

返回:學生名字 成績

張 90

王 80

李 60

趙 60

如果你只是想查詢的時候按成績高低排序:

select * from a order by [成績] desc排序可以是升序的 (asc),也可以是降序的 (desc)。如果沒有指定升序還是降序,就假定為 asc

返回:學生名字 成績

張 90

王 80

趙 50

李 30

如果不改變表裡的資料,只是想查詢的返回結果中改為你想要的顯示:

select [學生名字],sum(

case when [成績] >30 and [成績] <60 then 60

when [成績] <=30 then 50else [成績] end

) from a

group by [成績]

order by [成績] desc

返回:學生名字 成績

張 90

王 80

趙 60

李 50

2樓:

沒有語句能夠在查詢的同時修改資料庫的記錄

可以通過case 的方式將顯示結果改為你想要的 但是資料庫中的記錄不會改變

如果你想在查詢的時候修改 建議你先修改 再查詢儲存過程最好不要定義查詢結果作為返回值 系統資源佔用很多

sql查詢語句如何能把不符合條件的資料也一併查出來

3樓:匿名使用者

select * from b left join a on a.條件=b.條件

以多的那張表作為left join 左邊的那個,這裡也就是b表

4樓:東風冷雪

where是條件判斷,只能通過條件篩選。

多的資料不行查出來,除非b中9條資料和a一樣。

5樓:

使用left join

select * from b left join a on a.條件=b.條件

b表會全部顯示出來,多出的一條,b表內容有資料,a表相應的欄位是空(null)

6樓:匿名使用者

where a.條件(+)=b.條件

7樓:匿名使用者

select * from b left join a on a.條件=b.條件

mysql:只用一條sql語句,如何查出一個表裡,不同條件對應的資料條數

8樓:匿名使用者

看一下這個sql

select

sum(

if((*** = 1 and age = 2),1,0)),sum(

if((*** = 1 and age = 5),1,0)),sum(

if((*** = 1 and age = 10),1,0))from a_test

這個sql現在就是得出的這個結果

求一條sql語句,把資料庫表中一個欄位裡面的資料數字和文字都分開,並且生成一個相對應的列

9樓:匿名使用者

思路大概是這樣:

實用ltrim或者rtrim函式去掉左邊或右邊符合條件的字元。

如果是oracle環境,看你這裡都是字母在前數字在後的格式,假設舊列叫 col_old,新的字母列是col_str,新的數字列是col_num

update table1 set

col_str=rtrim(col_old,'1234567890'),

col_num=to_number(ltrim(col_old,rtrim(col_old,'1234567890')))

sql server 有沒有這個函式不知道了,反正這是一個思路吧。供參考而已

sql沒有這個東西,那我就給你提個思路吧,語句你自己寫了,我沒有環境。

用ascii碼和sql的ltrim和rtrim來做,你需要迴圈找到從左起每個字元都是ascii>=65(9以上即字母)的,直到找到ascii<=64的就結束,這樣可以把這個字元部分的長度得到,在用trim函式擷取一下就可以了。

求一條SQL語句如何寫

update pmm.student set name 張三 where name is null 取空的時候is null就可以了,name 和 name null 取的都不是空。謝謝。update from pmm.student set name 張三 where name is null 在...

求sql語句只修改重複資料中的一條記錄

用檢視就可以啊 create view v1 a,b,c,d as select a,b,c,row number over partition by a,b,c order by a as d from 表名 update v1 set a 新值a b 新值b c 新值c where d 1 這樣...

分析一條語句

一句話,0.5就是為了實現四捨五入,因為強制轉換double為int是,小數部分全部舍掉了。於是 0.5使其四捨五入,減小誤差 v i 100難道不是整數嗎?v i 是double型,v i 100就不會是整型的,除非你在前面加上強制轉換 int for i 0 i s str.push back ...