从我的 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
我有以下 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