【发布时间】:2013-02-25 08:36:39
【问题描述】:
1.我想知道我们什么时候使用select子句中的子查询结构?
2.如果用 1. 结构编写的任何查询在其他嵌套形式之一中具有等效项:
SELECT ... from ... where .. IN (SELECT ...)
SELECT ... from (SELECT ...)
谢谢
【问题讨论】:
1.我想知道我们什么时候使用select子句中的子查询结构?
2.如果用 1. 结构编写的任何查询在其他嵌套形式之一中具有等效项:
SELECT ... from ... where .. IN (SELECT ...)
SELECT ... from (SELECT ...)
谢谢
【问题讨论】:
出于本答案的目的,我将第一个选择称为外部选择,第二个选择称为内部选择。
如果您想查找与您知道的记录相似的记录,您可以使用SELECT ... FROM ... WHERE ... IN (SELECT ...)。内部选择的项目可以与外部选择进行比较。
Get the population of cities which are in Texas
SELECT city, population FROM cities WHERE city IN (SELECT city FROM states WHERE state = 'Texas')
如果你想为你的语句创建一个派生表,你可以使用SELECT ... FROM ... (SELECT ...)。然后可以在外部选择上使用在内部选择上计算的项目。
Get employees who have earned more than $500 this week (derived table x)
SELECT name, ROUND(wages) FROM (SELECT name, per_hour * hours_worked AS wages FROM timesheet) AS x WHERE wages > 500
还有第三种方式,即关联子查询,显示为SELECT ... FROM ... WHERE ... (= or > or < or != etc) (SELECT ...),用于根据计算选择行。
Get cities with bigger populations than 2 times the average
SELECT city, population FROM cities WHERE population > 2 * (SELECT AVG(population) FROM cities)
【讨论】: