從新手蛻變為高手,靈活運用 SQL 陳述式至關重要。本文收錄多個經典常用 SQL 範例供參考。
SELECT * INTO b FROM a WHERE 1<>1
INSERT INTO b(a, b, c) SELECT d, e, f FROM a;
SELECT a.title, a.username, b.adddate
FROM table a,
(SELECT MAX(adddate) adddate FROM table WHERE table.title = a.title) b
SELECT a.a, a.b, a.c, b.c, b.d, b.f FROM a LEFT OUTER JOIN b ON a.a = b.c
SELECT * FROM 行程表
WHERE DATEDIFF('minute', 開始時間, GETDATE()) > 5
DELETE FROM info WHERE NOT EXISTS (SELECT * FROM infobz WHERE info.infid = infobz.infid)
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
SELECT * FROM studentinfo WHERE NOT EXISTS (SELECT * FROM student WHERE studentinfo.id = student.id) AND 系名稱 = '...' AND 專業名稱 = '...' ORDER BY 性別, 生源地, 高考總成績
SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate,'yyyy') AS telyear,
SUM(DECODE(TO_CHAR(a.telfeedate,'mm'),'01',a.factration)) AS JAN,
SUM(DECODE(TO_CHAR(a.telfeedate,'mm'),'02',a.factration)) AS FEB,
...,
SUM(DECODE(TO_CHAR(a.telfeedate,'mm'),'12',a.factration)) AS DEC
FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration
FROM TELFEESTAND a, TELFEE b WHERE a.tel = b.telfax) a
GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate,'yyyy')
SELECT * FROM a LEFT INNER JOIN b ON a.a = b.b RIGHT INNER JOIN c ON a.a = c.c INNER JOIN d ON a.a = d.d WHERE ...
SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1)
THEN MIN(HandleID) + 1 ELSE 1 END) AS HandleID
FROM Handle
WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)