| yr | subject | winner | ||
|---|---|---|---|---|
| 1960 | Chemistry | Willard F. Libby | ||
| 1960 | Literature | Saint-John Perse | ||
| 1960 | Medicine | Sir Frank Macfarlane Burnet | ||
| 1960 | Medicine | Peter Madawar | ||
| ... | ||||
Change the query shown so that it displays Nobel prizes for 1950.
- SELECT yr, subject, winner FROM nobel
- WHERE yr = 1950
Show who won the 1962 prize for literature.
- SELECT winner FROM nobel
- WHERE yr = 1962
- AND subject = 'literature'
Show the year and subject that won 'Albert Einstein' his prize.
- SELECT yr,subject FROM nobel
- WHERE winner='Albert Einstein'
Give the name of the 'peace' winners since the year 2000, including 2000.
- SELECT winner FROM nobel
- WHERE subject='peace'
- AND yr>=2000
Show all details (yr, subject, winner) of the literature prize winners for 1980 to 1989 inclusive.
- SELECT yr, subject, winner FROM nobel
- WHERE subject='literature'
- AND yr BETWEEN 1980 AND 1989
Show all details of the presidential winners:
- SELECT * FROM nobel
- WHERE winner IN ('Theodore Roosevelt','Thomas Woodrow Wilson','Jimmy Carter','Barack Obama')
Show the winners with first name John
- SELECT winner FROM nobel
- WHERE winner LIKE 'John%'
Show the year, subject, and name of physics winners for 1980 together with the chemistry winners for 1984.
- SELECT yr,subject,winner FROM nobel
- WHERE (subject='physics' AND yr=1980)
- OR (subject='chemistry' AND yr=1984)
Show the year, subject, and name of winners for 1980 excluding chemistry and medicine
- SELECT yr,subject,winner FROM nobel
- WHERE yr=1980
- AND subject NOT IN ('chemistry','medicine')
NOT IN:用于从一个查询中排除满足特定条件的行
SELECT column_name(s) FROM table_name
WHERE column_name NOT IN (value1, value2, ...);
NOT EXISTS:用于从一个查询中排除满足特定条件的行
SELECT column_name(s) FROM table_name1
WHERE NOT EXISTS (SELECT column_name FROM table_name2 WHERE condition);
NOT IN 对于较小的表和少量值的情况是一个简单且高效的方法
NOT EXISTS语句使用子查询来执行条件筛选,避免了构建大型临时列表的开销,在处理大型表和大量值的情况下更加高效;NOT EXISTS 子查询可以包含多个条件,并可以与主查询进行关联
Show year, subject, and name of people who won a 'Medicine' prize in an early year (before 1910, not including 1910) together with winners of a 'Literature' prize in a later year (after 2004, including 2004)
- SELECT yr,subject,winner FROM nobel
- WHERE (subject='Medicine' AND yr<1910)
- OR (subject='Literature' AND yr>=2004)
Find all details of the prize won by PETER GRÜNBERG
The u in his name has an umlaut. You may find this link useful https://en.wikipedia.org/wiki/%C3%9C#Keyboarding
- SELECT * FROM nobel
- WHERE winner='PETER GRÜNBERG'
Find all details of the prize won by EUGENE O'NEILL
SELECT * FROM nobel WHERE winner="EUGENE O'NEILL"
SELECT * FROM nobel WHERE winner='EUGENE O\'NEILL'
List the winners, year and subject where the winner starts with Sir. Show the the most recent first, then by name order.
- SELECT winner,yr,subject FROM nobel
- WHERE winner LIKE 'Sir%'
- ORDER BY yr DESC,winner
DESC:降序 | ASC:升序
Show the 1984 winners and subject ordered by subject and winner name; but list chemistry and physics last.
- SELECT winner, subject FROM nobel
- WHERE yr=1984
- ORDER BY
- subject IN ('physics','chemistry'),subject,winner
subject IN ('chemistry','physics') can be used as a value - it will be 0 or 1
满足条件的为1,不满足条件的为0,优先按0-1排序使 chemistry physics 排在最后