㈠ 如何用sql SERVER取分組數據第一條
根據table1_id進行分組所得結果:
select * from (select a.id as a_id,a.name,a.time,a.content,b.id as b_id,b.user from table1 a inner join table2 b on a.id = b.table1_ID) new_tbl where b_id in (select min(id) from table2 group by table1_ID)
(1)oraclesql取第一條數據擴展閱讀:
注意事項
在SQL Server資料庫中,使用top關鍵字:SELECT TOP number|percent column_name(s) FROM table_name
在MySQL資料庫中,使用LIMIT關鍵字:SELECT column_name(s) FROM table_name LIMIT number
例子:SELECT * FROM Persons LIMIT 1
select bookName from book where price > 20 limit 1;
limit 1;
or
limit 0,1;
在Oracle資料庫中,使用ROWNUM關鍵字:
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number
例子:SELECT * FROM Persons WHERE ROWNUM <= 1
㈡ oracle 查詢數據只要排序後的第一條記錄(不用rownum=1),sql語句怎麼寫
1、創建測試表,
create table test_order(id number, value varchar2(50));
㈢ 如何取sql中的第一條
select top 1 col1,col2 from tblname where col3='111' order by col1 desc;
㈣ oracle資料庫中,怎樣快速查詢表中第一行數據
用rownum就可以實現的
select * from table where rownum=1 ;
rownum是一個序列,是oracle資料庫從數據文件或緩沖區中讀取數據的順序。它取得第一條記錄則rownum值為1,第二條為2,依次類推。
㈤ Oracle SQL 排序後取第一條記錄 沒有記錄,怎麼回事
一般是語句用法不對。
如有以下數據:
現在要求按sal列,也就是工資列,取出最小的一條。sql語句如下:
select t.* from
(select emp.*,row_number() over (order by sal) rn from emp) t
where rn=1;結果如下:
㈥ sql語句,選第一條數據
幾個常用資料庫的寫法如下:
1、mssql資料庫
selecttop1*fromtable
2、Oracle資料庫
select*fromtablewhererownum<2
3、MySQL資料庫:
select*fromtablelimit0,1
(這里keyword limit startid,rownum是這樣的:表示從startid + 1行開始,一共查詢rownum條記錄。
㈦ oracle取前幾條數據語句
1、首先在oracle軟體中,可以使用下面的 SELECT 語句:(其中%就是通配符,標識表達式>=1個字元)。
㈧ oracle 表中有很多相同的記錄,怎麼只取滿足條件的第一條
select * from dept where rownum =1
就在條件裡面加一個偽列就行了。
㈨ sql根據某一個欄位重復只取第一條數據
代碼如下:
select * from tbl_DPImg where ID in (select min(ID) from tbl_DPImg group by DPID)
處理後結果為:
查找表中多餘的重復記錄,重復記錄是根據單個欄位(teamId)來判斷
select * from team where teamId in (select teamId from team group by teamId having count(teamId) > 1)
刪除表中多餘的重復記錄,重復記錄是根據單個欄位(teamId)來判斷,只留有rowid最小的記錄
delete from team where
teamName in(select teamName from team group by teamName having count(teamName) > 1)
and teamId not in (select min(teamId) from team group by teamName having count(teamName)>1)
(9)oraclesql取第一條數據擴展閱讀
數據記錄篩選:
sql="select * from 數據表 where欄位名=欄位值 order by欄位名[desc]"(按某個欄位值降序排列。默認升序ASC)
sql="select * from 數據表 where欄位名like '%欄位值%' order by 欄位名 [desc]"
sql="select top 10 * from 數據表 where欄位名=欄位值 order by 欄位名 [desc]"
sql="select top 10 * from 數據表 order by 欄位名 [desc]"
sql="select * from 數據表 where欄位名in ('值1','值2','值3')"
sql="select * from 數據表 where欄位名between 值1 and 值2"
㈩ oracle和sql server取第一條記錄的區別以及rownum詳解
我們知道學生可能有重名的情況,那麼當重名的時候假設只需要取得重名結果集中的第一條記錄。
sql server:
select top(1) num,Name from M_Student where name = 'xy'
Oracle:
select num,Name from M_Student where name = 'xy' and rownum <= 1
對於rownum在oracle的使用的時候,有幾點需要注意:
(1) rownum 對於等於某值的查詢條件
如果希望找到學生表中第一條學生的信息,可以使用rownum=1作為條件。但是想找到學生表中第二條學生的信息,使用rownum=2結果查不到數據。因為rownum都是從1開始,但是1以上的自然數在rownum做等於判斷是時認為都是false條件,所以無法查到rownum = n(n>1的自然數)。
(2) rownum對於大於某值的查詢條件
如果想找到從第二行記錄以後的記錄,當使用rownum>2是查不出記錄的,原因是由於rownum是一個總是從1開始的偽列,Oracle 認為rownum> n(n>1的自然數)這種條件依舊不成立,所以查不到記錄。
(3) rownum對於小於某值的查詢條件
rownum對於rownum<n(n>1的自然數)的條件認為是成立的,所以可以找到記錄。比如 rownum < 3
(4) rownum和排序
Oracle中的rownum的是在取數據的時候產生的序號,所以想對指定排序的數據去指定的rowmun行數據就必須注意了。
select rownum ,id,name from student order by name;
ROWNUM ID NAME
3 200003 李三
2 200002 王二
1 200001 張一
4 200004 趙四
可以看出rownum並不是按照name列來生成的序號。系統是按照記錄插入時的順序給記錄排的號,rowid也是順序分配的。必須使用子查詢。
select rownum ,id,name from (select * from student order by name);
ROWNUM ID NAME
3 200003 李三
2 200002 王二
1 200001 張一
4 200004 趙四
這樣就成了按name排序,並且用rownum標出正確序號(由小到大)
看一個例子
把最先進入公司的5個人找出來
方法一 SELECT * FROM emp WHERE ROWNUM <= 5 ORDER BY hiredate;
方法二 SELECT * FROM(SELECT * FROM emp ORDER BY hiredate) WHERE ROWNUM <= 5;
把最先進入公司的6-10個人找出來
方法一
SELECT * FROM (SELECT * FROM emp ORDER BY hiredate)
WHERE ROWNUM <= 10
MINUS
SELECT * FROM (SELECT * FROM emp ORDER BY hiredate)
WHERE ROWNUM <= 5;
方法二(分頁常用)
SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e WHERE ROWNUM <= 10) t WHERE t.rn >= 6;
SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT ename, sal FROM emp) e WHERE ROWNUM <= 10) WHERE rn >= 6;