从我的 SQL 查询结果中删除重复项

Remove duplicates from my SQL query results

我有以下 SQL 查询:

SELECT DISTINCT(MovieAttributes.Description),
    MDetails.AttributeValueID, MovieAtrVal.Value
FROM 
    MDetails 
INNER JOIN 
    MovieAtrVal ON MovieAtrVal.AtrValID = MDetails.AttributeValueID
INNER JOIN 
    MovieAttributes ON MovieAttributes.ID = MovieAtrVal.AtrID 
WHERE 
    MovieID IN (SELECT Movie.ID 
                FROM Movie 
                INNER JOIN Subjects ON Subjects.ID = Movie.SubjectID 
                WHERE Subjects.Name LIKE '308') 
    AND MovieAttributes.Description != 'Environment'

输出是这样的:

RoadInfrastructure      1   None
Hairstyle               5   Short hair
Weather                 8   Sunny
Glasses                 18  Corrective glasses
Beard                   28  No beard
Age                     31  Young (17 to 35)
Age                     32  Middle (36 to 55)
RoadType                34  City
Accessories             38  None
Makeup                  44  None
FacialFeatures          47  None
RoadType                177 None
Weather                 178 Artificial light
Seating_height          206 83
Display_distance        220 67

我想要 2x 年龄、2x RoadType 和 2xWeather

我认为我应该使用 DISTINCT,但在这种情况下不起作用。

不使用 distinct,但通过按属性值 id 排序的描述获取分区的顶部行

WITH aux AS (
    SELECT
        movieattributes.description,
        mdetails.attributevalueid,
        movieatrval.value,
        ROW_NUMBER() OVER(
            PARTITION BY movieattributes.description
            ORDER BY
                mdetails.attributevalueid
        ) rn
    FROM
        mdetails
        INNER JOIN movieatrval ON movieatrval.atrvalid = mdetails.attributevalueid
        INNER JOIN movieattributes ON movieattributes.id = movieatrval.atrid
    WHERE
        movieid IN (
            SELECT
                movie.id
            FROM
                movie
                INNER JOIN subjects ON subjects.id = movie.subjectid
            WHERE
                subjects.name LIKE '308'
        )
        AND movieattributes.description != 'Environment'
)
SELECT
    *
FROM
    aux
WHERE
    rn = 1