Sql-Server
x
在這個查詢中代表什麼?
select convert(varchar(10), TotalSeconds / 3600) +':'+ convert(varchar(10), TotalSeconds % 3600 / 60) +':'+ convert(varchar(10), TotalSeconds % 60) as Seconds from (select DateDiff (second, date,outtime ) as TotalSeconds from attendance.attn_card_register) x -- this one
它是用於引用派生表的別名。在外部 SELECT 中,如果您完全限定了他們將讀取的列引用
x.TotalSeconds
select convert(varchar(10) , x.TotalSeconds / 3600) +':'+ convert(varchar(10) , x.TotalSeconds % 3600 / 60) +':'+ convert(varchar(10) , x.TotalSeconds % 60) as Seconds from (select DateDiff (second, date,outtime ) as TotalSeconds from attendance.attn_card_register) x
FROM 子句中使用的所有表都必須具有標準 SQL 術語中的“相關名稱”,即普通白話 SQL 中的“別名”
直接使用表時,名字就很明顯了。當您使用內聯派生表時,無論它是否實際被引用,它都必須使用別名
您也可以使用 CTE。這裡“MyCTE”是名稱,不需要別名
;WITH MyCTE AS ( select DateDiff (second, date,outtime) as TotalSeconds from attendance.attn_card_register) ) Select convert(varchar(10), TotalSeconds / 3600) +':'+ convert(varchar(10), TotalSeconds % 3600 / 60) +':'+ convert(varchar(10), TotalSeconds % 60) as Seconds from MyCTE;
編輯:並非所有 RDBMS 都需要它。SQL Server、MySQL 和 Teradata 可以,Oracle 沒有。