2010-11-08 39 views
1

这是我的代码后的第一次(可以对其进行编辑):如何选择使用MySQL的

SELECT * FROM posts WHERE posts.user_id = 1 OR posts.user_id = 2 

如何选择用户1和2中的第一篇文章?

alt text

回答

5
select user_id, min(post_id) as FirstPostID 
from posts 
where user_id in (1, 2) 
group by user_id 
+1

@RedFilter:不应该'group by'来到底? – Sarfraz 2010-11-08 17:11:52

+0

@Sarfraz你吧:) – faressoft 2010-11-08 17:13:12

+0

什么是“分”吗? – faressoft 2010-11-08 17:13:45

3
SELECT user_id, MIN(post_id) 
FROM posts 
WHERE user_id IN (1, 2) 
GROUP BY user_id 
0
SELECT user_id, post_id 
FROM posts 
GROUP BY user_id 
ORDER BY post_id asc; 

上面的查询会给你所有的第一篇文章的所有用户。与以前的解决方案略有不同。

+0

是的,但它本质上是做同样的事情,接受的答案。一般来说,最好避免复活旧线程,除非响应在以前的答案中添加了重要的内容。 – Leigh 2012-04-06 17:38:03

0

现有的答案可以得到改善,因为它们不匹配的问题:

“选择用户1和2中的第一篇文章”

只选择ID后需要您发出第二查询获取发布数据。

这避免了第二次查询发行获得那个职位数据:

SELECT * FROM posts WHERE ID in (
    select min(id) 
    from posts 
    where user_id in (1,2) 
); 

即使你只是想ID; group by子句也是不必要的:

select min(id) 
    from posts 
    where user_id in (1,2)