欢迎你们, 我有方法包含游标,它的工作是从数据库中检索数据。 当我将id传递给方法时,我希望首先选择并显示具有此id的行,然后继续显示按时间字段排序的其他行:) 如何?
答案 0 :(得分:1)
您可以使用两个由UNION组合的SELECT。第1个按id获取单行。第二个获取所有其他行不等于id。通过在每个SELECT中对“排序”值进行硬编码,您可以按时间顺序排序,同时强制从第一个SELECT行到顶部。
例如,您应该能够在rawQuery中使用此表单的SQL:
SELECT _id, time, 0 AS sort
FROM my_table
WHERE _id = ?
UNION ALL
SELECT _id, time, 1 AS sort
FROM my_table
WHERE _id <> ?
ORDER BY sort, time
编辑:
正如错误在评论中所说,ORDER BY中的术语需要匹配结果集中的列。所以你需要将CASE移动到选择。所以形式如下:
SELECT * , 0 AS sort, CASE WHEN date(note_notification) IS NULL THEN 1 ELSE 0 END AS sort2
FROM NotesTable WHERE note_id == 26
UNION ALL
SELECT * , 1 AS sort, CASE WHEN date(note_notification) IS NULL THEN 1 ELSE 0 END AS sort2
FROM NotesTable
ORDER BY sort, sort2, note_notification
如果仍然无法解决您的问题,请将您的问题更新为CL。建议,说明您的源数据和您希望从中获得的结果集。