`x` 在这个查询中代表什么?

Ish*_*sha 2 sql-server syntax alias

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
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 12

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;
Run Code Online (Sandbox Code Playgroud)

编辑:并非所有 RDBMS 都需要它。SQL Server、MySQL 和 Teradata 有,而 Oracle 没有。


Rob*_*ler 11

它是用于引用派生表的别名。在外部 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
Run Code Online (Sandbox Code Playgroud)