SELECT * FROM
(
SELECT city from addr_tab
UNION ALL
SELECT 'zzzz' AS city from dual
)ORDER BY city
我使用上述方法检索'zzzz'作为表的最后一条记录。但我不认为这会一直有效,因为这个城市在理论上可能比按字母顺序排在“zzzz”之上。是否还有其他强大的方法可以将这条录制的记录作为最后一张唱片?我需要这个用于使用oracle报告进行报告。任何帮助都是最受欢迎的。
答案 0 :(得分:4)
添加另一个虚拟列(order_col)以用于订购。 查询将最终结果如下。
SELECT * FROM
(
SELECT city, 1 as order_col from addr_tab
UNION ALL
SELECT 'zzzz', 2 as order_col AS city from dual
)ORDER BY order_col, city
这样你可以保证'zzzz'永远是最后一个,因为主要排序列(order_col)保证'zzzz'的值低于所有其他记录的值。
答案 1 :(得分:1)
嗯,正如其他人所说(评论和回答),从一开始就有可能有更好的方法来解决问题;但如果你需要暂时的黑客阅读!...
随时随地拨打最后一条记录...
'zzzz'很好......
然后使用自定义ORDER BY
,如:
SELECT *
FROM (
SELECT city
FROM addr_tab
UNION ALL
SELECT 'zzzz' AS city
FROM dual
)
ORDER BY
CASE WHEN city = 'zzzz' THEN 1 ELSE 0 END,
city;
答案 2 :(得分:0)
这可以通过以下查询来解决
SELECT * FROM
( SELECT city from addr_tab order by city)
UNION ALL
SELECT 'zzzz' from dual;
现在又有了另外一种风格
with
b1 as
(
SELECT city from addr_tab order by city
)
select city from b1
union all
SELECT 'zzzz' from dual;
所以你可以使用任何人......