YuCheng's Site
  • Home
  • About
  • Skills
  • Experiences
  • Education
  • Posts
  • Posts
  • [DB] Database
    • [SQL] CTE
    • [SQL] Merge
    • [SQL] Ranking
  • [OS] Linux
    • [Arch] 安裝(Virtualbox)
    • [CentOS] 設定網路靜態IP
    • [Ubuntu] SSH 連線
    • [Ubuntu] 設定網路靜態IP
  • [Secure] 安全性議題
    • [授權] OAuth 2.0 簡介
    • [授權] OAuth 2.0 授權許可
  • [Web] Web 相關
    • [Keycloak] docker 安裝
    • [Web] FontForge 造難字
    • [Web] 敏感性 GET 參數
    • [Web] 敏感性 GET 參數
  • [前端] Javascript
    • [JS] Array 常用方法
    • [JS] Object 常用方法
    • [JS] 各種模組(module)
    • [JS] 提升與暫時性死區
    • [JS] 非同步程式設計
    • [JS]原型繼承鏈模型
    • [Code] 格式化民國年
    • [Code] 複製元件內的文字
    • [DIY] 前端路由
    • [DIY] 開發 proxy
  • [前端] Typescript
    • [TS] 擴充標準內建物件
  • [前端] Vue
    • [Router] Navigation Guard 加入查詢參數
    • [TS] TS-Provide
    • [元件] CheckBox
    • [元件] Promise 元件方法
    • [元件] Transparent Wrapper
    • [元件] TypeScript 注意事項
    • [元件] 全域元件
  • [後端] .NET
    • [.NET] .NET 6 Web API 專案
    • [.NET] PDF 列印
    • [.NET] WebView2 單檔部屬
    • [.NET] 製作 Nuget package
    • [.NET] 開發階段專案敏感資料
    • [Snippet] DataTable轉Json
    • [Snippet] JsonElement 操作
    • [部屬手動] Ubuntu Nginx
    • [基礎] 非同步控制器
    • [練習] 認證與授權
      • [驗證與授權] 驗證與授權
      • [驗證與授權] 驗證設定
      • [驗證與授權] 驗證實例
      • [驗證與授權] 授權設定
      • [驗證與授權] 備註頁面
    • [練習] 即時聊天專案
      • [SignalR] 建立專案
      • [SignalR] 後端 Token 授權
      • [SignalR] 前端登入頁面
      • [SignalR] 後端 Token 認證
  • [後端] csharp
    • [Code] 處理民國年
    • [Code] 處理民國年
  • [系統] 軟體設計
    • [架構] 多層(layer)架構
    • [架構] 多層(tier)架構
    • [架構] 無暇的程式碼
    • [程式] 巢狀結構
    • [程設] 鏈式語法比較
    • [開發] API-first approach
  • [維運] Container 基礎
    • [Basic] 學習資源
    • [Docker] 基礎指令
    • [Docker] 安裝
    • [K8s] 共享 tnsnames.ora
    • [K8S] 自架 K8S 腳本
  • [維運] DevOps
    • [Git] orphan branch/worktree
    • [Git] Release Action (Dotnet)
    • [Git] Release Action (Vue)
    • [K8S] K8S 安裝
    • [SonarQube] 安裝與.NET 檢測
  • [資安] 防火牆
    • [GeoIP] 封鎖地理位置
  • [HIS] FHIR
    • [SMART] Overview
  • [其他] Other
    • [智能家居] Home Assistant
      • [安裝] Home Assistant 安裝
    • [Bot] Telegram Bot
    • [DIY] 一鍵登入台灣杉
    • [Hugo] Toha Theme
    • [OpenWrt] Docker
    • [工具] Gdrive CLI / Linux
    • [工具] openapi generator
    • [工具] Vim Plugin YCM
    • [授權] OAuth2.0
Hero Image
[SQL] Ranking

先建立一個練習表格: CREATE TABLE Department ( id SERIAL PRIMARY KEY, name VARCHAR NOT NULL ); CREATE TABLE Employee ( id SERIAL PRIMARY KEY, name VARCHAR NOT NULL, salary INT, dep_id INT, ); INSERT INTO Employee(name, salary, dep_id) VALUES ('Mandy', 45000, 2); INSERT INTO Employee(name, salary, dep_id) VALUES ('Emily', 43000, 1); INSERT INTO Employee(name, salary, dep_id) VALUES ('Sylvia', 26000, 2); INSERT INTO Employee(name, salary, dep_id) VALUES ('Eva', 48000, 3); INSERT INTO Employee(name, salary, dep_id) VALUES ('Sandra', 33000, 3); INSERT INTO Employee(name, salary, dep_id) VALUES ('Lily', 28000, 2); INSERT INTO Employee(name, salary, dep_id) VALUES ('April', 50000, 1); INSERT INTO Employee(name, salary, dep_id) VALUES ('Cindy', 43000, 1); INSERT INTO Employee(name, salary, dep_id) VALUES ('Kay', 40000, 3); INSERT INTO Department(name) VALUES ('IT'); INSERT INTO Department(name) VALUES ('RD'); INSERT INTO Department(name) VALUES ('QA'); 資料排序 直接用 ORDER BY 無法得到秩(排名)

Friday, June 17, 2022 Read
Hero Image
[SQL] MERGE

一段神奇的語法,可以指定對舊資料、新的資料分別進行不同的動作(通常是更新、新增), 不指定的話預設是 BY TARGET, 動作目標都是 TARGET。 在更新清單的時候特別好用。 MERGE INTO TABLE1 DEST -- 目標表格 USING( SELECT :K1 K1, :K2 K2, :K3 K3, :K4 K4, FROM DUAL) SRC ON( DEST.K1 = SRC.K1 AND DEST.K2 = SRC.K2 AND DEST.K4 = SRC.K4 ) -- TARGET 有,SOURCE 沒有,更新 TARGET 裡面的紀錄 WHEN MATCHED THEN UPDATE SET F1 = SRC.F1, F2 = SRC.F2, -- TARGET 沒有,SOURCE 有,SOURCE 新增到 TARGET WHEN NOT MATCHED THEN INSERT ( K1, K2, K4, K3, F1, F2 ) VALUES ( :K1, :K2, :K4, :K3, :F1, :F2) Reference [StackOverflow] Performing MERGE with Dapper.net

Tuesday, June 14, 2022 Read
Hero Image
[SQL] 用 CTE (Common Table Expression) 達成遞迴查詢,建立 MenuTree

建立一個暫存表 testCTE,並暫存查詢語句(所有資料)的結果 MSSQL CTE 名稱前不需加上 RECURSEIVE 關鍵字,必須使用 UNION ALL PostgreSQL:CTE 名稱前需加上 RECURSIVE 關鍵字,可用 UNION 或 UNION ALL WITH CTE (id, name, parentId, lvl) AS ( -- 取得第一層的資料(Anchor member)(假設沒有 parentId 的是第一層) SELECT id, name parentId, 0 AS lvl FROM menus WHERE parentId IS NULL UNION ALL -- 遞迴取得 Recursive member ( SELECT A.id, A.name, A.parentId, B.lvl + 1 AS lvl FROM menus A INNER JOIN CTE B on A.parentIdi = B.d ) ) SELECT * FROM CTE WHERE id=1 ORDER BY LEVEL Reference [StackOverflow] How to create a query from a menu tree using RECURSIVE CTE? [SQL] 使用 CTE 遞迴查詢 (PostgreSQL / MSSQL)

Monday, April 25, 2022 Read
Navigation
  • About
  • Skills
  • Experiences
  • Education
Contact me:
  • [email protected]
  • tigernaxoJr
  • Chen Yu Cheng
  • +886919681059

Stay up to date with email notification


By entering your email address, you agree to receive the newsletter of this website.

Toha Theme Logo Toha
© 2020 Copyright.
Powered by Hugo Logo