【问题标题】:Nested SELECT clause in SELECT , FROM or WHERE and differences [duplicate]SELECT , FROM 或 WHERE 中的嵌套 SELECT 子句和差异[重复]
【发布时间】:2013-02-25 08:36:39
【问题描述】:

1.我想知道我们什么时候使用select子句中的子查询结构?

2.如果用 1. 结构编写的任何查询在其他嵌套形式之一中具有等效项:

  SELECT ... from ... where .. IN (SELECT ...)
    SELECT ... from (SELECT ...)

谢谢

【问题讨论】:

    标签: mysql sql tsql


    【解决方案1】:

    出于本答案的目的,我将第一个选择称为外部选择,第二个选择称为内部选择。

    如果您想查找与您知道的记录相似的记录,您可以使用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)
    

    【讨论】:

      猜你喜欢
      • 2014-01-27
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 2020-09-04
      • 1970-01-01
      相关资源
      最近更新 更多