【发布时间】:2014-06-04 16:26:35
【问题描述】:
我有一个查询,我只想在一列中有不同 - InjuryScenario.id,现在它要求一个错误 - 我怎么能用这个查询来做到这一点:
SELECT TOP (10)
Cause.Cause_name,
City.City_name,
distinct InjuryScenario.InjuryScenario_id,
InjuryScenario.Date,
Place.Place_name,
Media.Media_name,
InjuryScenario.InjuryDesc,
Media.MediaType_name
FROM InjuryScenario
INNER JOIN Cause
ON InjuryScenario.Cause_id = Cause.Cause_id
INNER JOIN PlaceDet
ON InjuryScenario.InjuryScenario_id = PlaceDet.InjuryScenario_id
INNER JOIN City
ON PlaceDet.City_id = City.City_id
INNER JOIN Place
ON InjuryScenario.Place_id = Place.Place_id
INNER JOIN Media2InjuryScenario
ON InjuryScenario.InjuryScenario_id = Media2InjuryScenario.InjuryScenario_id
INNER JOIN Media
ON Media2InjuryScenario.Media_id = Media.Media_id
ORDER BY InjuryScenario.TimeStamp DESC
谢谢
【问题讨论】:
-
DISTINCT对所有列进行操作以生成唯一的集合。您可以GROUP BY子查询(或 CTE)中的单个列,然后将其用于JOIN返回您想要的详细信息。 -
请格式化您的代码,使其更具可读性。
-
抱歉,什么是 CTE?能给我举个例子吗?
-
distinct删除结果集中的重复项。如果您不希望特定列具有重复数据,则需要专门将它们过滤掉,distint不是为此。您使用哪种 DBMS? -
正如@nivas 所说,最好先将查询更改为不创建重复行。您可以使用重复的问题,但发布一些示例数据可能会产生更好的重复数据删除方法。具体来说,
InjuryScenario(或与之直接相关的事物)看起来可能是罪魁祸首。如果InjuryScenario.InjuryScenario_id应该是唯一的,那么应该使用其他列中的哪一行?据推测,InjuryDescInjuryScenario.Date中的每个 id 都有多个值...
标签: sql