我需要选择由以下逻辑排序的记录,但是当DESC处于条件状态时,SQLite会引发错误.
ORDER BY
CASE
WHEN parentGUID IS NULL THEN datePosted DESC
ELSE datePosted
END
Run Code Online (Sandbox Code Playgroud)
这是为了实现Facebook的排序= - 原始帖子(总是有空的parentGUID)按日期递减,并回复按日期升序排序的原始帖子.
小智 5
如果我理解正确,您将需要加入具有父帖子日期的表格.如果那是可用的,这样的事情应该做:
DECLARE @X TABLE
(
ID INT NOT NULL IDENTITY PRIMARY KEY,
parentID INT,
datePosted DATE NOT NULL
)
INSERT INTO @X (parentID, datePosted) VALUES
(NULL, '2010-01-01'),
(NULL, '2010-01-02'),
(1, '2010-01-03'),
(1, '2010-01-04'),
(1, '2010-01-05'),
(2, '2010-01-06')
SELECT
Post.parentID, Post.datePosted
FROM @X AS Post
LEFT JOIN @X AS Parent ON Post.parentID = Parent.ID
ORDER BY
-- Order by post date, or rather the parent's post date if one exists
COALESCE(Parent.datePosted, Post.datePosted)
-- Order by reply date
Post.datePosted
Run Code Online (Sandbox Code Playgroud)
这给出了这个输出:
parentID datePosted
-------- ----------
NULL 2010-01-02
2 2010-01-06
NULL 2010-01-01
1 2010-01-03
1 2010-01-04
1 2010-01-05
Run Code Online (Sandbox Code Playgroud)
请注意,如果回复可以依次回复,则会中断; 你需要更强大的东西.在MS SQL中,我使用CTE,但我对Sqlite不是很熟悉.
| 归档时间: |
|
| 查看次数: |
1130 次 |
| 最近记录: |