SQL 从选择查询中选择

hun*_*unB 1 sql sql-server

我想做一个选择请求,执行第一个选择,然后使用该选择执行第二个选择。

我使用临时表制作了第一个版本,但我想知道是否有办法在没有临时表的情况下做到这一点

我的临时表代码如下:

select  dvd_name, book_name  , count(*) nb
into #t
from usr 
inner join book on usr_book_id  = book_id 
inner join dvd on dvd_id = usr_dvd_id
group by dvd_name, book_name 
having count(*) > 1

select  top 10 usr_smthg,  #t.book_name,dvd_name
from #t
inner join book b on b.book_name = #t.book_name
inner join usr on usr_book_id  = book_id 
Run Code Online (Sandbox Code Playgroud)

And*_*zov 5

您可以为此使用 CTE

with t as
(
    select  dvd_name, book_name  , count(*) nb
    from usr 
    inner join book on usr_book_id  = book_id 
    inner join dvd on dvd_id = usr_dvd_id
    group by dvd_name, book_name 
    having count(*) > 1
)

select  top 10 usr_smthg,  t.book_name,dvd_name
from t
inner join book b on b.book_name = t.book_name
inner join usr on usr_book_id  = book_id 
Run Code Online (Sandbox Code Playgroud)