我进行了以下查询,获取表MIN(id)
中重复path
值的movies
SELECT m.id, m.user_id , m.path
FROM movies m
INNER JOIN (
SELECT Min(id) as movie_id, path, COUNT(*)
FROM movies
WHERE importer LIKE '%AS%'
GROUP BY path
HAVING COUNT(*) > 1) temp
ON temp.path = p.path
AND temp.movie_id = m.id
AND importer LIKE '%AS%'
我得到了这个结果:
id | user_id | path |
------------------------------------
2 | 1234 | XXXX |
8 | 4231 | BBBB |
问题是我有另一部有相同路径的电影,但没有出现,因为MIN()
和GROUP BY path
我想对路径进行分组,但不要退出另一条路径,因为我做了MIN(id)
这是预期的结果:
id | user_id | path |
------------------------------------
2 | 1234 | XXXX |
8 | 4231 | BBBB |
5 | 3421 | BBBB |
我做错什么了?
@Tim Biegeleisen
问题是,在使用相同的user_id获取重复路径的查询中:
id | user_id | path |
------------------------------------
3523 12287 asd
3524 12287 asd
3525 12287 asd
我应该获得每个分组路径的最小id。
发布于 2017-02-07 16:22:18
我认为您想要做的是GROUP BY
user_id
和path
,然后选择具有最小电影ID的记录,如果有多个用户与给定的path
相关联。如果是这样的话,那么下面的查询应该可以工作:
SELECT m1.id, m1.user_id, m1.path
FROM movies m1
INNER JOIN
(
SELECT user_id, path, MIN(id) AS min_id
FROM movies
WHERE importer LIKE '%AS%'
GROUP BY user_id, path
) m2
ON m1.path = m2.path AND
m1.user_id = m2.user_id AND
m1.id = m2.min_id
https://stackoverflow.com/questions/42094794
复制相似问题