Tsql 如何使用一个查询的结果组合另一个查询?
我正在尝试在以下位置查询satckoverflow数据: 将给我一个50000个问题的列表,以及发布问题的用户的用户Id(OwnerUserId)和被接受答案的用户Id(AcceptedAnswerId) 现在,我正在尝试编写一个查询,以选择已询问或发布接受答案的用户列表。 大概是这样的:Tsql 如何使用一个查询的结果组合另一个查询?,tsql,dataexplorer,Tsql,Dataexplorer,我正在尝试在以下位置查询satckoverflow数据: 将给我一个50000个问题的列表,以及发布问题的用户的用户Id(OwnerUserId)和被接受答案的用户Id(AcceptedAnswerId) 现在,我正在尝试编写一个查询,以选择已询问或发布接受答案的用户列表。 大概是这样的: Select Id, reputation from users INNER JOIN (Select Id as postId, OwnerUserId, AcceptedAnswerId from po
Select Id, reputation from users
INNER JOIN
(Select Id as postId, OwnerUserId, AcceptedAnswerId from posts)
ON
users.Id = posts.OwnerUserId or users.Id = posts.AcceptedAnswerId
你不需要一个子选择
SELECT u.Id, u.reputation, p.id as PostId, p.acceptedAnswerId
FROM users u
INNER JOIN posts p ON u.Id = p.OwnerUserId OR u.Id = p.AcceptedAnswerId
WHERE p.PostTypeId = 1
虽然这需要很长时间才能完成。我想添加一个约束条件,如
和p.LastEditDate>“2014年1月1日”
标题中的问题的答案是:您可以使用with
子句来实现这一点
简单的例子:
WITH query1 AS
(SELECT * FROM myTable),
query2 AS
(SELECT * FROM query1)
SELECT * FROM query2;
WITH
子句大大增强了复杂查询的可读性。对于更复杂的场景,您可以创建一个类似于查询中的临时表/视图
您可以使用create table
创建表,然后INSERT
将一个查询的结果插入其中。之后,您可以在该表上执行标准的选择
WITH query1 AS
(SELECT * FROM myTable),
query2 AS
(SELECT * FROM query1)
SELECT * FROM query2;