【发布时间】:2016-01-12 03:21:10
【问题描述】:
我的朋友几次前问过question。还有一个答案,这很好,但不适用于我的情况。该解决方案的想法是将当前表连接到自身。这对我来说似乎很昂贵且无效,因为实际上在我的查询中这些表上有四个join(votes、favorites、comments、viewed)。
现在我想知道,如何使用CASE 函数来做到这一点?像这样的:
... ORDER BY Type, CASE WHEN AcceptedAnswerId = Id THEN 1 ELSE 0, timestamp
或者有没有更好的解决方案?
为了更具可读性,我将这些示例粘贴在这里:
我有一张这样的桌子:
// Mytable
+----+--------------------+------+------------------+-----------+
| Id | QuestionOrAnswer | Type | AcceptedAnswerId | timestamp |
+----+--------------------+------+------------------+-----------+
| 1 | question1 | 0 | 3 | 1 |
| 2 | answer1 | 1 | NULL | 2 |
| 3 | answer2 | 1 | NULL | 3 | -- accepted answer
| 4 | answer3 | 1 | NULL | 4 |
+----+--------------------+------+------------------+-----------+
现在我想要这个结果:(请关注订单)
+----+--------------------+------+------------------+-----------+
| Id | QuestionOrAnswer | Type | AcceptedAnswerId | timestamp |
+----+--------------------+------+------------------+-----------+
| 1 | question1 | 0 | 3 | 1 |
| 3 | answer2 | 1 | NULL | 3 | -- accepted answer
| 2 | answer1 | 1 | NULL | 2 |
| 4 | answer3 | 1 | NULL | 4 |
+----+--------------------+------+------------------+-----------+
// ^ 0 means question and 1 means answer
【问题讨论】:
-
您能否在问题中包含您当前尝试使用的 SQL?
-
@VolkerK 该架构不完整。实际上有一个
related列将相关问题和答案链接在一起。 -
@VolkerK 你为什么删除你的答案?你的小提琴很棒..!无论如何,我对你的小提琴有一个小问题。正如我所说,实际上我有一个名为
related的列,其中包含确定相关的帖子。现在我用问题的id填充该列。我的意思是所有答案的列加上问题ID的问题填充。那样可以么?或者我可以存储其他内容来链接相关帖子(问题和答案)? -
@VolkerK 我明白了,谢谢。
-
抱歉,没有更多关于这个问题的想法。
标签: mysql sql-order-by