你如何運行“order by”然后“replace”字串,但保持順序?背景關系 - 我需要將字串“column_name”放在第一行,因此使用“zzz_column_name”強制它按順序排列。然后我需要使用replace將它從“zzz_column_naem”更改為“column_name”。
SELECT replace(column_name, 'zzz_', '')
FROM (
SELECT *
FROM (
SELECT 'zzz_column_name' AS column_name
UNION
SELECT column_name
FROM table
) s
ORDER BY column_name DESC
) a
在replace第一行之后,我會失去order by.
uj5u.com熱心網友回復:
只是order by未修改的列。您甚至不需要子查詢:
SELECT replace(column_name, 'string', '') AS column_name_replaced
FROM (
SELECT 'zzz_column_name' AS column_name
UNION ALL
SELECT column_name FROM table
) s
ORDER BY column_name DESC
注意:UNION ALL比UNION- 使用它更有效,除非你有充分的理由不這樣做
我想知道您是否真的試圖將具有固定值的行放在首位;在這種情況下,我們可以只用條件排序來簡化整個事情。假設一個像 的表mytable(col),我們可以添加一個標題行,其值'my_header'如下:
SELECT 'my_header' AS col, 1 AS is_header
UNION ALL
SELECT col, 0 FROM mytable
ORDER BY is_header DESC, col
這會將標題行放在首位,然后按順序排列所有值。
如果您介意附加列,我們可以使用子查詢將其洗掉:
SELECT col
FROM (
SELECT 'my_header' AS col, 1 AS is_header
UNION ALL
SELECT col, 0 FROM mytable
) t
ORDER BY is_header DESC, col
uj5u.com熱心網友回復:
您不需要外部 SELECT 并且可以按原始列名排序
SELECT replace(column_name, 'string', '')
FROM (
SELECT 'zzz_column_name' AS column_name
UNION
SELECT column_name
FROM table
) s
ORDER BY column_name DESC
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/530320.html
