๋ชฉ์ฐจ

์ํ ์ฟผ๋ฆฌ
WITH TB1 AS (
SELECT 1 AS SEQ, 'user' AS SEARCH_TYPE, 'ํ๊ธธ๋' AS SEARCH_NM, '2025-01-01 12:00:00' AS CREATED_AT
UNION ALL
SELECT 2 AS SEQ, 'bussiness' AS SEARCH_TYPE, 'ABC Corp' AS SEARCH_NM, '2025-01-02 14:00:00' AS CREATED_AT
UNION ALL
SELECT 3 AS SEQ, 'user' AS SEARCH_TYPE, '์ด์์ ' AS SEARCH_NM, '2025-01-01 09:00:00' AS CREATED_AT
),
TB2 AS (
SELECT 1 AS MEMB_ID, 'ํ๊ธธ๋' AS NAME
UNION ALL
SELECT 2 AS MEMB_ID, 'ABC Corp' AS NAME
)
SELECT
B.REVERSE_ROWNUM, -- ์ญ์ ROWNUM
B.SEQ,
B.SEARCH_TYPE,
B.SEARCH_NM,
B.CREATED_AT
FROM (
SELECT
A.*,
COUNT(*) OVER() AS TOTALROW,
-- ์ญ์ ์ ๋ ฌ
(COUNT(*) OVER() - ROW_NUMBER() OVER(ORDER BY A.CREATED_AT DESC, A.SEARCH_NM ASC) + 1) AS REVERSE_ROWNUM
FROM (
SELECT
A.SEQ,
CASE
WHEN A.SEARCH_TYPE = 'user' THEN '๊ฐ์ธ'
WHEN A.SEARCH_TYPE = 'bussiness' THEN '๊ธฐ์
'
ELSE '๊ธฐํ'
END AS SEARCH_TYPE,
A.SEARCH_NM,
DATE_FORMAT(A.CREATED_AT, '%Y.%m.%d %H:%i') AS CREATED_AT
FROM TB1 A
LEFT OUTER JOIN TB2 B ON A.SEQ = B.MEMB_ID
) A
) B
;
๋ฑ ๋ด๋ ํต์ฌ์ ๋ค์ ๋ถ๋ถ์ด๋ค.
(COUNT(*) OVER() - ROW_NUMBER() OVER(ORDER BY A.CREATED_AT DESC, A.SEARCH_NM ASC) + 1) AS REVERSE_ROWNUM
(COUNT(*) OVER()๋ฅผ ํตํด ์ ์ฒด ํ ์์์ ROW_NUMBER()๋ก ์ ๋ ฌํด์ ์์ฑ๋ ๋ฒํธ๋ฅผ ๋นผ๊ณ 1์ ๋ํ๋ค.
์ ์์ ์์๋ ์ ์ฒด ํ ์๋ 3์ด๊ณ ROW_NUMBER()๋ฅผ ๋นผ๊ณ 1์ ๋ํ๋ฉด ์๋์ ๊ฐ๋ค.
| ROWNUM | REVERSE_ROWNUM |
| 1 | 3 |
| 2 | 2 |
| 3 | 1 |
ROW_NUMBER()๊ฐ 1์ผ ๊ฒฝ์ฐ REVERSE_ROWNUM์ (3 - 1) + 1 = 3
ROW_NUMBER()๊ฐ 2์ผ ๊ฒฝ์ฐ REVERSE_ROWNUM์ (3 - 2) + 1 = 2
ROW_NUMBER()๊ฐ 3์ผ ๊ฒฝ์ฐ REVERSE_ROWNUM์ (3 - 3) + 1 = 1
๊ฐ์ธ ์คํฐ๋ ๊ธฐ๋ก์ ๋ฉ๋ชจํ๋ ๊ณต๊ฐ์ด๋ผ ํ๋ฆฐ์ ์ด ์์ ์ ์์ต๋๋ค.
ํ๋ฆฐ ์ ์์ ๊ฒฝ์ฐ ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค.
[MySQL/MariaDB] GROUP_CONCAT() ๊ฐ๋จ ์ฌ์ฉ๋ฒ(feat. ๋ฌธ์์ด ๋ถ์ด๊ธฐ)
๋ชฉ์ฐจ GROUP_CONCAT() ๊ฐ๋จ ์ฌ์ฉ๋ฒ ๐ ์ญ์๋ ๋ฏธ๋์ ๋ด๊ฐ ๋ณด๊ธฐ์ํด ๊ธฐ๋กํจ ์ ๋ฌด๋ฅผ ํ๋ค๋ณด๋ฉด ํน์ ํ๋๊ฐ์ ์๋์ฒ๋ผ ๊ฐ๋ก๋ก ๋ถ์ฌ์ ๋ณด์ฌ์ค์ผ ๋๋ ๊ฒฝ์ฐ๋ ์๋ค. ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ฐํ ์ ์ฟผ
yaga.tistory.com
[MySQL/MariaDB] merge(๊ฐ์ด ์์ผ๋ฉด update, ์๋๋ฉด insert)(feat. ON DUPLICATE KEY UPDATE...)
๋ชฉ์ฐจMySQL INSERT INTO...ON DUPLICATE KEY UPDATE... ๐mysql์๋ Oracle์ merge into์ ๊ฐ์ ๊ธฐ๋ฅ์ด ์๋ค๋ ๊ฑธ ์๊ฒ๋์ด ๋ฏธ๋์ ๋ด๊ฐ ๋ณด๊ธฐ์ํด ๊ธฐ๋กํจํ ์คํธ๋ฅผ ์ํด ํ ์ด๋ธ ํ๋ ์์ฑCREATE TABLE `test_220714` ( `id` big
yaga.tistory.com
'IT > DataBase' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Oracle] ๋ช ์์ PIVOT ์์ด ํผ๋ฒ ๊ตฌํํ๊ธฐ-์ค๋ฌธ ์๋ต ๋ฐ์ดํฐ ์ ํ ์ฟผ๋ฆฌ (0) | 2025.10.25 |
|---|---|
| [SQL] ๋ฐฑ๋ถ์จ ์์ (31) | 2024.03.20 |
| [cubrid] ์๋ธ ์ฟผ๋ฆฌ ๋ณ์นญ ์ฌ์ฉ ์ ์ฃผ์์ (43) | 2024.01.13 |
| [Oracle] N๊ฐ์ํ๊น์ง ๋ ์ง ๊ตฌํ๊ธฐ (feat. Connect by level) (65) | 2023.12.03 |
| [DBMS] N:M(๋ค๋๋ค) ๊ด๊ณ์ผ ๋ ๋งคํ ํ ์ด๋ธ๋ก ๊ด๊ณ ํ์ฑ (62) | 2023.09.24 |
๋๊ธ