我正在制作一个sql命令,每次用户提出问题或回答问题时都会得到最新的值。但是当我得到答案值时会出现错误,它会得到所有答案&题 。我想只获得最新的asnwer。示例:
| postid | type | parentid |
|--------- |---------|-----------
| 97 | A | 92
| 96 | A | 93
| 95 | A | 93
| 94 | Q | NULL
| 93 | Q | NULL
| 92 | Q | NULL
| 91 | Q | NULL
我尝试使用groupby(parentid)。但它没有任何问题。像这样:
| postid | type | parentid |
|--------- |---------|-----------
| 97 | A | 92
| 96 | A | 93
但我想得到: 最新答案(在回答之前没有得到答案+这个答案的问题) 问题(如果没有答案,请保留此问题)
| postid | type | parentid |
|--------- |---------|-----------
| 97 | A | 92
| 96 | A | 93
| 94 | Q | NULL
| 91 | Q | NULL
这是我的代码:
SELECT `p`.*
FROM `qa_posts` `p`
JOIN `user_member` `u` ON u.user_id = p.userid
LEFT JOIN `user_profile` `pr` ON u.user_id = pr.user_id
WHERE p.is_deleted =0
GROUP BY `p`.`parent_id`
ORDER BY `p`.`postid` DESC LIMIT 10
答案 0 :(得分:1)
这个怎么样?
select max(postid), type, parentid
from posts
group by type, parentid
小提琴:http://sqlfiddle.com/#!9/357ce/1
修改强>
好吧,似乎我可能误解了,你想要所有未解答的问题,加上其他问题的最新答案,但不是那些有答案的问题?如果是这样,我们可以使用UNION
轻松完成此操作,这样做:
select max(postid) p, type, parentid
from posts
where type = 'A'
group by parentid
union
select p1.postid, p1.type, p1.parentid
from posts p1
left join posts p2
on p1.postid = p2.parentid
where p2.parentid is null and p1.type = 'Q'
order by p desc;
这里有一个更新的小提琴:http://sqlfiddle.com/#!9/05667/17