簡體   English   中英

連接兩個表的正確方法是什么,按列分組,select 每條記錄只有一行?

[英]what's the right way of joning two tables, group by a column, and select only one row for each record?

我有一張船員桌

           CREATE TABLE crew(crew_id INT, crew_name nvarchar(20), )

還有一個時間日志表,它只是一個很長的機組人員執行的操作列表

  CREATE TABLE [dbo].[TimeLog](
[time_log_id] [int] IDENTITY(1,1) NOT NULL,
[experiment_id] [int] NOT NULL,
[crew_id] [int] NOT NULL,
[starting] [bit] NULL,
[ending] [bit] NULL,
[exception] [nchar](10) NULL,
[sim_time] [time](7) NULL,
    [duration] [int] NULL,
[real_time] [datetime] NOT NULL )

我想要一個視圖,該視圖僅顯示具有最新 sim_time + 持續時間的每個機組人員的一行。

是查看 go 的方式嗎? 如果是,我該怎么寫? 如果沒有,最好的方法是什么?

謝謝

這是對您想要的 select 的查詢:

select * from (
    select 
    *,
    row_number() over (partition by c.crew_id order by l.sim_time desc) as rNum
    from crew as c
    inner join TileLog as l (on c.crew_id = l.crew_id)
) as t
where rNum = 1

這取決於您需要該數據的目的。
無論如何,查找最新模擬時間的簡單查詢類似於

select C.*, TL.sim_time 
from crew C /*left? right? inner?*/ join TimeLog TL on TL.crew_id = C.crew.id
where TL.sim_time in (select max(timelog_subquery.sim_time) from TimeLog timelog_subquery where crew_id = C.crew_id )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM