『壹』 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;