首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 進階技巧精選:8 大實用語句模式速查表

     編輯:關於SqlServer

彙整 8 個高頻實用 SQL 模式,涵蓋複製表、關聯查詢、排程提醒、清理孤立資料、跨月庫存對帳、學生資料篩選等場景,可直接套用改良。

1. 僅複製表結構


SELECT * INTO b FROM a WHERE 1<>1;

2. 複製表資料(目標表已存在)


INSERT INTO b(a, b, c) SELECT d, e, f FROM a;

3. 顯示文章、發文者、最新回覆時間


SELECT a.title, a.username, b.adddate
FROM table a,
     (SELECT MAX(adddate) adddate FROM table WHERE table.title = a.title) b;

4. 外部連接查詢


SELECT a.a, a.b, a.c, b.c, b.d, b.f
FROM a LEFT OUTER JOIN b ON a.a = b.c;

5. 行程提前 5 分鐘提醒


SELECT * FROM 排程
WHERE DATEDIFF(minute, 開始時間, GETDATE()) > 5;

6. 刪除主表中副表無對應的資料


DELETE FROM info
WHERE NOT EXISTS (
  SELECT * FROM infobz WHERE info.infid = infobz.infid
);

7. 庫存跨月對帳(上月結存 + 本月入庫 = 本月結存)


SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE
FROM TABLE1,
     (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE
      FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND
            FROM TABLE2
            WHERE TO_CHAR(UPD_DATE, 'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,
           (SELECT NUM, UPD_DATE, STOCK_ONHAND
            FROM TABLE2
            WHERE TO_CHAR(UPD_DATE, 'YYYY/MM') = TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') || '/01', 'YYYY/MM/DD') - 1, 'YYYY/MM')) Y
      WHERE X.NUM = Y.NUM (+)
        AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND
     ) B
WHERE A.NUM = B.NUM;

8. 學生資料多條件篩選


SELECT * FROM studentinfo
WHERE NOT EXISTS (SELECT * FROM student WHERE studentinfo.id = student.id)
  AND 系名稱 = '...' AND 專業名稱 = '...'
ORDER BY 性別, 生源地, 高考總成績;

使用提醒

  • 語法以 SQL Server / Oracle 為主,MySQL/PostgreSQL 需微調(如 TO_CHAR→DATE_FORMAT、NVL→COALESCE、GETDATE→NOW())
  • 子查詢關聯條件 WHERE table.title = a.title 若無索引效能極差,實際應用務必加索引
  • DELETE ... NOT EXISTS 大量資料建議分批提交,避免長鎖定
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved