【发布时间】:2021-08-31 13:44:23
【问题描述】:
我对 SQL 很陌生,我想从 SQL 中的查询中删除不同的元素。
我有这个问题:
SELECT
LabelingTasks.SessionID, LabelingFiles.LabelingFileID,
LabelingFiles.Link, LabelingTasks.TaskTypeID,
LabelingTasks.StartFrame, LabelingTasks.EndFrame,
LabelingTasks.DataMarkingTypeID
FROM
LabelingTasks
INNER JOIN
LabelingFiles ON LabelingTaskID = LabelingFiles.LabelingTaskID
WHERE
LabelingTasks.MovieID = 10832
AND LabelingTasks.DataMarkingTypeID = 5
AND LabelingTasks.TaskTypeID = 4
GROUP BY
StartFrame
ORDER BY
StartFrame ASC
输出如下所示:
Header1 Header2 Header3 Header4 StartFrame EndFrame Header7
-----------------------------------------------------------
xxx xxx xxx xxx 0 3000 xxx
xxx xxx xxx xxx 3001 6000 xxx
xxx xxx xxx xxx 3001 6000 xxx
xxx xxx xxx xxx 6001 9000 xxx
所需的输出应如下所示:
Header1 Header2 Header3 Header4 StartFrame EndFrame Header7
-----------------------------------------------------------
xxx xxx xxx xxx 0 3000 xxx
xxx xxx xxx xxx 3001 6000 xxx
xxx xxx xxx xxx 6001 9000 xxx
【问题讨论】:
-
请将
xxx替换为实际值。 -
SELECT DISTINCT将只返回 3 行以上,因为所有其他列的值'xxx'。您隐藏数据的事实意味着它不能代表问题。 -
@TimBiegeleisen,这些标题无关紧要:)
-
@jack Tim 指的是您的混淆数据;如前所述,
select distinct是您问题的答案。 -
对于
StartFrame的3001,您有两个不同的行。你想保留这两个中的哪一个?SELECT max(header1), max(header2), max(header3), max(header4), startframe, endframe, max(header7) FROM ... GROUP BY startframe, endframe;会成功吗?
标签: sql sql-server distinct