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

SQL 實用語句大全:24 個高頻場景範本(複製表、分頁、去重、隨機抽樣...)

     編輯:關於SqlServer

資料表結構操作

  1. 複製結構:SELECT * INTO b FROM a WHERE 1<>1 或 SELECT TOP 0 * INTO b FROM a
  2. 複製資料:INSERT INTO b(a,b,c) SELECT d,e,f FROM a
  3. 跨庫複製:INSERT INTO b(a,b,c) SELECT d,e,f FROM a IN 'path\db.mdb' (Access)

查詢技巧

  1. 子查詢:SELECT * FROM a WHERE x IN (SELECT y FROM b)
  2. 最新回覆時間:SELECT a.title, a.username, b.adddate FROM a, (SELECT MAX(adddate) adddate FROM a GROUP BY title) b
  3. 外部聯結:SELECT * FROM a LEFT OUTER JOIN b ON a.id = b.id
  4. 內嵌檢視:SELECT * FROM (SELECT a,b,c FROM t) T WHERE T.a > 1
  5. BETWEEN:含邊界 WHERE dt BETWEEN '2023-01-01' AND '2023-12-31'
  6. IN / NOT IN:WHERE status IN ('A','B','C')
  7. 刪除主表無對應從表資料:DELETE FROM a WHERE NOT EXISTS (SELECT 1 FROM b WHERE a.id = b.a_id)
  8. 多表聯結:SELECT * FROM a JOIN b ON ... JOIN c ON ... JOIN d ON ...
  9. 排程提醒:SELECT * FROM schedule WHERE DATEDIFF(minute, start_time, GETDATE()) > 5
  10. 分頁 (SQL Server):
    SELECT TOP 10 b.* FROM (
        SELECT TOP 20 pk, sort_col FROM tbl ORDER BY sort_col DESC
    ) a JOIN tbl b ON b.pk = a.pk ORDER BY a.sort_col
    
  11. 前 N 筆:SELECT TOP 10 * FROM tbl WHERE ...
  12. 分組取最大值完整列:
    SELECT a,b,c FROM t ta
    WHERE a = (SELECT MAX(a) FROM t tb WHERE tb.b = ta.b)
    
  13. 集合差集:(SELECT x FROM A) EXCEPT (SELECT x FROM B) EXCEPT (SELECT x FROM C)
  14. 隨機 10 筆:SELECT TOP 10 * FROM tbl ORDER BY NEWID()
  15. 刪除重複列 (保留最大 ID):
    DELETE FROM t WHERE id NOT IN (
        SELECT MAX(id) FROM t GROUP BY col1, col2, ...
    )
    
  16. 列出所有使用者資料表:SELECT name FROM sysobjects WHERE xtype = 'U'
  17. 列出資料表所有欄位:SELECT name FROM syscolumns WHERE id = OBJECT_ID('TableName')
  18. 交叉表/樞紐邏輯 (CASE):
    SELECT type,
        SUM(CASE vender WHEN 'A' THEN pcs ELSE 0 END) AS A,
        SUM(CASE vender WHEN 'B' THEN pcs ELSE 0 END) AS B,
        SUM(CASE vender WHEN 'C' THEN pcs ELSE 0 END) AS C
    FROM tbl GROUP BY type
    
  19. 清空資料表 (保留結構):TRUNCATE TABLE table1
  20. 取第 10-15 筆:
    SELECT TOP 5 * FROM (
        SELECT TOP 15 * FROM tbl ORDER BY id ASC
    ) t ORDER BY id DESC
    
  21. 將 EXEC 結果存入變數:
    DECLARE @num INT, @sql NVARCHAR(4000)
    SET @sql = 'SELECT @a = COUNT(*) FROM TableName'
    EXEC sp_executesql @sql, N'@a INT OUTPUT', @num OUTPUT
    SELECT @num
    
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved