今天在 MS SQL Server 2000 Enterprise Manager 的 SQL 窗格中調試如下 SQL 語句:

SELECT TOP 10 *
FROM (SELECT TOP 20 *
FROM news
WHERE class = 001
ORDER BY pubdate DESC)
ORDER BY pubdate

發現 SQL 窗格執行後在將原始的 SQL 改動了,自動增加了一個 DERIVEDTBL ,變成如下這樣了:

SELECT TOP 10 *
FROM (SELECT TOP 20 *
FROM news
WHERE class = 001
ORDER BY pubdate DESC) DERIVEDTBL
ORDER BY pubdate

這個 DERIVEDTBL 還真讓我費了一點勁,以為是新的保留關鍵字,可是在 SQL Server 的 Online Help 中沒有找到,在 Google 也沒找著這個單詞的解釋。

後來無意中把 DERIVEDTBL 改成 Temp 發現也能用,汗~~~,原來是 SQL 窗格只是給子查詢增加了一個別名而已。

唉,真是吃了沒文化的虧了,誰讓咱 SQL Server 學/用得少呢。

建議把這個作為招聘 SQL Server 相關人員的一個面試題。


出處:http://blog.joycode.com/moslem/archive/2004/06/03/23561.aspx

創作者介紹
創作者 Mash 的頭像
Mash

Mash

Mash 發表在 痞客邦 留言(0) 人氣( 292 )