将0作为父ID加入id,以查询具有不同父ID的id

时间:2018-04-06 06:42:31

标签: mysql join distinct

我正在尝试列出与用户相关的讨论。

想象一下,如果你愿意的话:

posts
-------------------------------------------------------------------
ID | PID | FID | TITLE                                    | USER
1  |  0  |  1  | Hello World                              | User 1
2  |  0  |  23 | Endangered Squirrels & How to Cook Them  | Eddy
3  |  1  |  1  | Re: Hello World                          | Eddy
4  |  1  |  1  | Re: Hello World                          | Clark
5  |  0  |  3  | Any Vacation Suggestions?                | Clark
6  |  5  |  3  | Re: Any Vacation Suggestions?            | Eddy
7  |  5  |  3  | Re: Any Vacation Suggestions?            | Clark
8  |  5  |  3  | Re: Any Vacation Suggestions?            | Ellen

要显示所有Eddy的帖子,我使用查询选择带有 DISTINCT父母ID(pid)的帖子,并认为它正在运行。我很快意识到0只考虑了DISTINCT一次,如果他创建了一个新主题而没有回复,那么如果它不是他的第一个就没有被列出。

那么如何获得带有 DISTINCT pid 和pid!= 0的ID列表,并将其与 pid = 0的id查询一起加入,其中user = Eddy < /强>

这是我曾经问过的第一个问题,如果它不完美,请原谅我。

使用QUERY更新

我已经切换到使用GROUP BY,所以我可以获取帖子的ID,但问题仍然是相同的

我被要求提供我的查询。这是我正在使用的那个只提供1行pid为0.我还更新了上面的表格布局以显示论坛ID,在下面的查询中它只从公共论坛列表中提取主题。

SELECT id, pid FROM posts WHERE fid IN (1,2,3) AND author = 'Eddy' GROUP BY pid ORDER BY IF(latest > timestamp, latest, timestamp) DESC LIMIT 1, 5;

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我能够通过 GROUP BY 中的简单 IF 做我想做的事情,它非常简单。

{{1}}