【发布时间】:2014-02-07 20:54:33
【问题描述】:
我目前有一个用于论坛的 MySQL 帖子表。这包括父帖子和子帖子。如果它是一个父帖子,它有一个topic。如果是子帖子,则包含parent_id。
例如:
TABLE posts
+----+-----------+---------+--------+------+
| id | parent_id | topic | author | body |
+----+-----------+---------+--------+------+
| 1 | NULL | "Hello" | "Me" | ... |
| 2 | 1 | NULL | "Me" | ... |
+----+-----------+---------+--------+------+
我想运行一个 SQL 查询,类似于以下内容:
SELECT id, 'self' AS parent_id, topic, author, body FROM posts WHERE parent_id IS NULL,
UNION
SELECT id, parent_id, (SELECT topic WHERE id=parent_id) as topic FROM posts WHERE topic IS NULL
期望的输出:
+----+-----------+---------+--------+------+
| id | parent_id | topic | author | body |
+----+-----------+---------+--------+------+
| 1 | "self" | "Hello" | "Me" | ... |
| 2 | 1 | "Hello" | "Me" | ... |
+----+-----------+---------+--------+------+
基本上,我想返回父主题而不必运行多个查询。有没有办法做到这一点?我应该只添加一个“parent_topic”字段吗?
谢谢!
【问题讨论】:
-
你可以用例,
CASE WHEN parent_id IS NULL THEN 'self' ELSE parent_id END。 -
我的问题在于从父帖子返回“主题”字段:)