為什么用rownum查詢到的結果為空?
SQL> select * from mystudent;
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
2 ls 24
3 ww 25
SQL> select * from mystudent where rownum in(select min(rownum) from mystudent group by stuno);
未選定行
SQL> select * from mystudent where rowid in(select min(rowid) as n from mystudent group by stuno);
STUNO STUNAME STUAGE
---------- -------------------- ----------
2 ls 24
3 ww 25
1 zs 23
uj5u.com熱心網友回復:
rownum只是偽列,不能這樣用uj5u.com熱心網友回復:
in 改成小于等于 試試uj5u.com熱心網友回復:
該成小于等于的話語法錯誤了
uj5u.com熱心網友回復:
我知道是偽劣,按道理我的sql陳述句應該是沒錯的額。
uj5u.com熱心網友回復:
rownum不能和聚合函式一起用吧,你這個陳述句的目的是啥
uj5u.com熱心網友回復:
rownum只是偽列,不能這樣用
我知道是偽劣,按道理我的sql陳述句應該是沒錯的額。
rownum不能和聚合函式一起用吧,你這個陳述句的目的是啥
和聚合函式應該沒有關系
SQL> select * from mystudent;
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
2 ls 24
3 ww 25
SQL> select * from tt;
NO
----------
1
SQL> select * from mystudent where stuno in(select stuno from tt)
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
2 ls 24
3 ww 25
SQL> select * from mystudent where rownum in (select stuno from tt);
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
3 ww 25
uj5u.com熱心網友回復:
rownum只是偽列,不能這樣用
我知道是偽劣,按道理我的sql陳述句應該是沒錯的額。
rownum不能和聚合函式一起用吧,你這個陳述句的目的是啥
和聚合函式應該沒有關系
SQL> select * from mystudent;
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
2 ls 24
3 ww 25
SQL> select * from tt;
NO
----------
1
SQL> select * from mystudent where stuno in(select stuno from tt)
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
2 ls 24
3 ww 25
SQL> select * from mystudent where rownum in (select stuno from tt);
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
3 ww 25
rownum表示的是行數,就是針對你剛才這個查詢塊的結果集有多少行,必須是從1開始計數,而且是連續的。
select * from scott.emp t where rownum in (1,2,4);結果是兩行。把1去掉是空白。
通俗點就是你的結果查出來之后才會有rownum,也就是序號
uj5u.com熱心網友回復:
rownum只是偽列,不能這樣用
我知道是偽劣,按道理我的sql陳述句應該是沒錯的額。
rownum不能和聚合函式一起用吧,你這個陳述句的目的是啥
和聚合函式應該沒有關系
SQL> select * from mystudent;
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
2 ls 24
3 ww 25
SQL> select * from tt;
NO
----------
1
SQL> select * from mystudent where stuno in(select stuno from tt)
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
2 ls 24
3 ww 25
SQL> select * from mystudent where rownum in (select stuno from tt);
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
3 ww 25
rownum表示的是行數,就是針對你剛才這個查詢塊的結果集有多少行,必須是從1開始計數,而且是連續的。
select * from scott.emp t where rownum in (1,2,4);結果是兩行。把1去掉是空白。
通俗點就是你的結果查出來之后才會有rownum,也就是序號
你好像回答的sql和我的sql不一樣。
你能解釋我上面那個sql的結果么?
uj5u.com熱心網友回復:
rownum只是偽列,不能這樣用
我知道是偽劣,按道理我的sql陳述句應該是沒錯的額。
rownum不能和聚合函式一起用吧,你這個陳述句的目的是啥
和聚合函式應該沒有關系
SQL> select * from mystudent;
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
2 ls 24
3 ww 25
SQL> select * from tt;
NO
----------
1
SQL> select * from mystudent where stuno in(select stuno from tt)
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
2 ls 24
3 ww 25
SQL> select * from mystudent where rownum in (select stuno from tt);
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
3 ww 25
rownum表示的是行數,就是針對你剛才這個查詢塊的結果集有多少行,必須是從1開始計數,而且是連續的。
select * from scott.emp t where rownum in (1,2,4);結果是兩行。把1去掉是空白。
通俗點就是你的結果查出來之后才會有rownum,也就是序號
你好像回答的sql和我的sql不一樣。
你能解釋我上面那個sql的結果么?
因為你的stuno只有123,所以只會出來三行
uj5u.com熱心網友回復:
rownum只是偽列,不能這樣用
我知道是偽劣,按道理我的sql陳述句應該是沒錯的額。
rownum不能和聚合函式一起用吧,你這個陳述句的目的是啥
和聚合函式應該沒有關系
SQL> select * from mystudent;
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
2 ls 24
3 ww 25
SQL> select * from tt;
NO
----------
1
SQL> select * from mystudent where stuno in(select stuno from tt)
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
2 ls 24
3 ww 25
SQL> select * from mystudent where rownum in (select stuno from tt);
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
3 ww 25
rownum表示的是行數,就是針對你剛才這個查詢塊的結果集有多少行,必須是從1開始計數,而且是連續的。
select * from scott.emp t where rownum in (1,2,4);結果是兩行。把1去掉是空白。
通俗點就是你的結果查出來之后才會有rownum,也就是序號
你好像回答的sql和我的sql不一樣。
你能解釋我上面那個sql的結果么?
因為你的stuno只有123,所以只會出來三行
SQL> select * from mystudent where rownum in (1,2,3);
STUNO STUNAME STUAGE
---------- -------------------- ----------
1 zs 23
1 zs 23
2 ls 24
照理說應該出現的是這3條記錄?
uj5u.com熱心網友回復:
rownum作為條件需要保持連續性,或者你可以干脆記成rownum就是不能出現在where后面都行
select* from(select 1 from dual union all select 2 from dual) where rownum = 2;
想實作相似的功能可以用row_number后再套一層解決。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/18031.html
標籤:開發
上一篇:如何查看資料庫有無長鏈接陳述句
