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

2021-07-13 09:12:58 字數 1426 閱讀 4063

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語句中FROM子句列表中的多個表的錯誤

首先你要判斷學號,姓名,課程名稱,成績 在你要引用的幾個表中是只出現一次,例如學號在學生基本資訊表,其他兩個表沒有這個字段,否則你要在前面加上表名。此外在引用表時還可以加個簡寫,好像 學生基本資訊 as user 這樣增強可讀性。下面做個示範 select user.學號,user.姓名,proje...

sql語句中怎麼表示符號,SQL語句中怎麼表示「 」符號

字串用 分隔符 你是mysql 還是其他的!mysql 表名用 這個分隔符 動態語句中兩個單引為乙個,所以得改成如下 declare email char 100 set email 1028125449 qq.com declare sql varchar 8000 set sql select ...

這個sql語句中的countscoreassums

只是隨便定義的乙個列的別名,因為列被聚合計算後事沒有名稱的,所以需要定義乙個別名來顯示該列的名稱。這條sql語句中 sum 欄位名 as 別名 是什麼意思,請詳細解釋一下 首先這幾個表都是sql server的系統表。a,b,c是三個表的別名,例如a.name就相當於sysobjects.name,...