根据列中的值按列动态排序



简单明了:是否可以按系统创建动态排序,根据列内的值,查询将查询。

查询是这样的:

SELECT id, name, sortbycolumn FROM table
WHERE id = :in_id
UNION
SELECT id, name, null sortbycolumn FROM table
WHERE id = :in_id
ORDER BY -- This part I simply don't know how to write. I have tried case and decode...

回答。我终于找到了解决办法。这很简单,当我阅读其他答案时,我很困惑为什么它不适合我。显然,当使用case时,列的索引将无法工作。

最后,我将整个带有并集的查询放到一个子查询中,其解为:
SELECT * FROM(
SELECT id, name, sortbycolumn FROM table
WHERE id = :in_id
UNION
SELECT id, name, null sortbycolumn FROM table
WHERE id = :in_id
)
ORDER BY
case when sortbycolumn = 1 THEN id,
case when sortbycolumn = 2 then name
else id end

最新更新