-- 建表語句 CREATE TABLE score( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), SUBJECT VARCHAR(20), score INT); -- 添加數據 INSERT INTO score VALUES (NULL,'張三','語文',81), (NULL,'張三','數學',75), (NULL,'李四','語文',76), (NULL,'李四','數學',90), (NULL,'王五','語文',81), (NULL,'王五','數學',100), (NULL,'王五 ','英語',90); -- 用一條 SQL 語句查詢出每門課都大於 80 分的學生姓名 -- 想法: -- 難點:每門課的分數 -- 解決方案:把分數少於80分的進行排除(not exist -- not exists 字段 SELECT * FROM score a WHERE NOT EXISTS (SELECT * FROM score b WHERE a.name = b.name AND b.score < 80) ; -- not in 字段 SELECT * FROM score WHERE NAME NOT IN (SELECT NAME FROM score WHERE score<=80) -- all()方法 SELECT DISTINCT NAME FROM score a WHERE 80 < ALL(SELECT score FROM score WHERE a.name = NAME );
ANY關鍵字:
假設any內部的查詢語句返回的結果個數是三個,
那么,
select ...from ... where a>any(...)
等同於
select ...from ... where a > result1 or a > result2 or a > result3
ALL關鍵字:
ALL關鍵字與any關鍵字類似,只不過上面的or改成and。
SOME關鍵字:
some關鍵字和any關鍵字是一樣的功能。