我可以在SQL Server中的查询中命名过滤表吗?

时间:2016-03-22 21:51:10

标签: sql-server

这可能是一个愚蠢的问题,但是......

我有一个超级简单的查询来过滤表格的内容

SELECT * 
FROM
    [Service Contract Data].[dbo].[filtered_data] 
WHERE 
    Product LIKE 'Repair RepairMate' OR 
    Product LIKE 'Repair TruckEst' OR 
    Product LIKE 'Repair UltraMate' OR 
    Product LIKE 'Repair UltraMate Basic' OR
    Product LIKE 'Repair UltraMate Marine' OR
    Product LIKE 'Repair UltraMate Motorcycle'

我的问题是 - 我可以给这个数据块一个别名(例如t1),所以我可以在我的代码中稍后引用它吗?如果是这样的话?我知道我可以使用AS来替换它所引用的表格,但我想命名过滤后的输出。感谢

2 个答案:

答案 0 :(得分:1)

如果您使用的是SQL Server 2005及更高版本,则可以使用CTE

;with c1 as (
  SELECT * 
  FROM [Service Contract Data].[dbo].[filtered_data] 
  WHERE Product like 'Repair RepairMate' or Product like 'Repair TruckEst'
    or Product like 'Repair UltraMate' 
    or Product like 'Repair UltraMate Basic' 
    or Product like 'Repair UltraMate Marine' 
    or Product like 'Repair UltraMate Motorcycle'
)
select * from c1
顺便说一下,你使用LIKE但没有外卡,在这种情况下你可以使用等号或使用IN

如果是这样,你可以将那个long where子句改为

  ....
  WHERE Product IN ('Repair RepairMate', 'Repair TruckEst',
    'Repair UltraMate', 'Repair UltraMate Basic', 
    'Repair UltraMate Marine', 'Repair UltraMate Motorcycle')

答案 1 :(得分:0)

使用此:

SELECT [columlist] INTO #yourdesiredname
 FROM .....

这将在TempDb中创建一个临时表。所以它会一直持续到服务器重启或你打电话

 DROP TABLE #yoursesiredname