以下有三道面試題:html
建立兩張表格:面試
CREATE TABLE CUSTOMERS ( ID NUMBER(2), NAME VARCHAR2(10) ); CREATE TABLE ORDERS ( ID NUMBER(2), CUSTOMERID NUMBER(2) ); SELECT * FROM CUSTOMERS; INSERT INTO CUSTOMERS VALUES(1,'JOE'); INSERT INTO CUSTOMERS VALUES(2,'HENRY'); INSERT INTO CUSTOMERS VALUES(3,'SAM'); INSERT INTO CUSTOMERS VALUES(4,'MAX'); SELECT * FROM ORDERS; INSERT INTO ORDERS VALUES(1,3); INSERT INTO ORDERS VALUES(2,1);
解題答案:網站
/* 某網站包含兩張表,Customer和Orders表。 編寫一個SQL查詢。找出全部從不訂購任何東西的用戶。 */ SELECT * FROM CUSTOMERS WHERE ID NOT IN ( SELECT CUSTOMERID FROM ORDERS );
建立兩張表格:spa
CREATE TABLE T_EMAIL ( ID NUMBER(2) PRIMARY KEY, EMAIL VARCHAR2(20) ); SELECT * FROM T_EMAIL; INSERT INTO T_EMAIL VALUES(1,'ganzexin@163.com'); INSERT INTO T_EMAIL VALUES(2,'ganzexin@163.com'); INSERT INTO T_EMAIL VALUES(3,'1395520340@qq.com');
解題答案:.net
-- 刪除重複項 DELETE FROM T_EMAIL WHERE ROWID NOT IN ( SELECT MIN(ROWID) FROM T_EMAIL GROUP BY EMAIL -- 記得要寫Group by 要否則就只會 ) DELETE FROM T_EMAIL WHERE EMAIL IN (SELECT EMAIL FROM T_EMAIL GROUP BY EMAIL HAVING COUNT(*)>1) And ROWID Not In (Select Min(ROWID) From T_EMAIL Group By EMAIL Having Count(*) > 1);
刪除重複值:ROWID
注意事項:
1.ROWID的使用——快速刪除重複的記錄
2.rowid去重(刪除表的重複記錄)code
建立兩張表格:htm
CREATE TABLE T_EMPLOYEE ( ID NUMBER(3) PRIMARY KEY, NAME VARCHAR2(10), SALARY NUMBER(7,2), DEPTNO NUMBER(2) ); CREATE TABLE T_DEPTARTMENT ( ID NUMBER(2) PRIMARY KEY, NAME VARCHAR2(10) ); INSERT INTO T_EMPLOYEE VALUES(1,'JOE',7000,1); INSERT INTO T_EMPLOYEE VALUES(2,'HENRY',8000,2); INSERT INTO T_EMPLOYEE VALUES(3,'SAM',7000,2); INSERT INTO T_EMPLOYEE VALUES(4,'MAX',10000,1); INSERT INTO T_DEPTARTMENT VALUES(1,'IT'); INSERT INTO T_DEPTARTMENT VALUES(2,'SALES'); SELECT * FROM T_EMPLOYEE; SELECT * FROM T_DEPTARTMENT;
解題答案:blog
--找出每一個部門工資最高的員工 SELECT * FROM ( SELECT TDEPT.NAME AS DEPTNAME,TEMP.NAME,TEMP.SALARY,ROW_NUMBER()OVER(PARTITION BY TDEPT.NAME ORDER BY TEMP.SALARY DESC)AS RK FROM T_EMPLOYEE TEMP JOIN T_DEPTARTMENT TDEPT ON TEMP.DEPTNO =TDEPT.ID ) WHERE RK =1;