當我們只關心資料表有多少記錄行而不需要知道具體的字段值時,類似「select 1 from tblname」是乙個很不錯的sql語句寫法,它通常用於子查詢。這樣可以減少系統開銷,提高執行效率,因為這樣子寫的sql語句,資料庫引擎就不會去檢索資料表裡一條條具體的記錄和每條記錄裡乙個個具體的字段值並將它們放到記憶體裡,而是根據查詢到有多少行存在就輸出多少個「1」,每個「1」代表有1行記錄,同時選用數字1還因為它所占用的記憶體空間最小,當然用數字0的效果也一樣。在不需要知道具體的記錄值是什麼的情況下這種寫法無疑更加可取。
下面舉例示範這種寫法的常見用法:
1)列出每個班的學生人數
常規寫法
1
2
select
class,
count
(*)
as
pax
from
students
group
by
class;
更優寫法
1
2
select
class,
count
(1)
as
pax
from
students
group
by
class;
2)列出每個班最年輕的學生資料
常規寫法
1
2
3
select
a.*
from
students a
where
not
exists(
select
b.sid
from
students b
where
b.sid=a.sid
and
b.date_birth>a.date_birth);
更優寫法
1
2
3
select
a.*
from
students a
where
not
exists(
select
1
from
students b
where
b.sid=a.sid
and
b.date_birth>a.date_birth);
查select 1搜到的,分享給大家
1 查詢部門30中員工的詳細資訊。1 select from emp where deptno 30 2 找出從事clerk工作的員工的編號 姓名 部門號。2 select empno,ename,deptno from emp where job upper clerk 3 檢索出獎金多於基本工資...
阻塞函式和select
阻塞方式 block,顧名思義,就是程序或是執行緒執行到這些函式時必須等待某個事件發生,如果事件沒有發生,程序或執行緒就被阻塞,函式不能立即返回。非阻塞方式 non block,就是程序或執行緒執行此函式時不必非要等待事件的發生,一旦執行肯定返回,以返回值的不同來反映函式的執 況。如果事件發生則與阻...
for和select迴圈語句
第一種for迴圈語句 for 變數名 in 變數取值列表 do 指令 done 第二種for迴圈語句 for exp1 exp2 exp3 do 指令done 範例 for和while迴圈的對比 for迴圈 for i 1 i 3 i do echo i done while迴圈 i 1while ...