sql連線查詢語句中from子句中表的順序有什麼要求

2021-07-13 09:11:54 字數 1426 閱讀 5699

1樓:

嚴格上來說是沒有要求的,他們有兩種寫法,一種是ansi_sql,一種是trans_sql.

ansi-sql:

select * from table1,table2,table3 where table1.id=table2.id and table3.id = table2.pid

trans-sql:

select * from table1 join table2 on table1.id = table2.id join table3 on table2.

pid = table3.id

也就是說兩種寫法看一下連線條件是在from中還是直接寫在where條件中了!

嚴格意義上來說,連線順序可以隨便寫的。但是兩種還是有差別的。一般要求有順序,但這個順序不是強制要求——而是為了資料庫效率,也就是語句的效能上是有要求的!

在ansi中,一般不作要求,因為資料庫會自動優化語句,在where中的條件,資料庫根據自己的規則和學習在執行時條件順序與你寫時的未必是一樣的。達到了自動優化的目的——但這種優化只是資料庫的自認為,他有可能優化後的語句反倒慢了,這時你需要關閉資料庫優化功能,讓他按你寫的順序執行。而在from中時資料庫不會自己優化,所以此時你應該注意順序。

不管哪一種情況,建議順序都是先生成連線條件結果較少的,也就是說在語句執行結果集時,結果集儘量的小,不要大,所以對於連線時兩個小資料表先連線,然後再是大表連線。但這個順序只是建議——嚴格上卻沒有任何要求。

2樓:匿名使用者

根據業務需求,查詢分清主從表,一般都是用主表連從表。

3樓:太平洋來的風

沒有具體要求,除指明 左 右連線

4樓:是勇敢

子句,從左向右寫即可,如:

select w.* from wc w left join cw c on w.number = c.number;

用sql查詢語句怎麼讓表中id按照順序來

5樓:獨孤的輝煌

這個首先你要寫出你要查詢的內容,如 select name,age from student order by id asc;

asc 代表升序這也是預設的desc代表降序;

6樓:匿名使用者

select row_number() over(order by id asc) as rowno from 表

7樓:匿名使用者

降序:order by [id] desc

升序:order by [id] asc 或 order by [id]

8樓:

語句最後面加

order by id asc(升序)/desc(降序)

複雜sql語句查詢,sql語句查詢

select id,name,isnull select sum 金額 from b表 where id a表.id and bno 20 0 正常消費,isnull select sum 金額 from b表 where id a表.id and bno 30 0 充值,select top 1 ...

兩條sql語句union排序,SQL語句中UNION排序問題

order by 放裡面 select starttime,endtime from select from table order by starttime asc where endtime getdate union select starttime,endtime from select f...

C解析sql語句,C 中 SQL 查詢語句

語法錯誤 bai你在from後面的是一串dusql語句,所以語zhi句後是要加別名的。試試 daoselect sum 總額 回 from select distinct 合同,總額 from table where 專案 aa and型別答 a as tab select sum 總額 from ...