MySQL:如何使用子查询显示在特定日期之后下达的订单。

时间:2013-02-19 17:25:21

标签: mysql subquery

我的导师要我使用子查询来执行以下操作:

“显示2006年2月5日或之后下订单的公司的公司名称。”

到目前为止,我有:

SELECT customer_code
FROM orders
WHERE order_date > '2006-02-05'; 

这会产生结果,但不是子查询。如何用子查询显示它?

2 个答案:

答案 0 :(得分:0)

您有一个查询可以获得某些订单的customer_code。但是现在你还需要获得那些customer_code的所有客户的名字。这里有一些提示,

  1. 如果您只有customer_code,您将如何获得客户的姓名?把它写成它自己的简单查询,与订单无关。

  2. 如果您有多个customer_code,现在如何获得客户名称?修改#1中的查询以执行此操作。

  3. 最后,您已经有了查询以获取各种订单的大量customer_code(来自您的问题),因此请使用该查询而不是来自#2的customer_codes。您问题的查询将成为子查询。

  4. 请注意,您也可以使用JOIN获得相同的输出,但您特别询问了子查询。

答案 1 :(得分:0)

试试这个:

SELECT company_name FROM customers
WHERE id IN 
(SELECT customer_code FROM orders
 WHERE order_date > '2006-02-05'); 

子查询从订单表中选择customer_code WHERE order_date在2006-02-05之后。然后,这用于在子查询中查找customer表中的company_name WHERE id。

还有其他方法:

SELECT company_name 
FROM orders, customers
WHERE customer_code = customers.id 
and order_date > '2006-02-05';


SELECT company_name 
FROM customers
JOIN ORDERS
ON customer_code = customers.id 
AND order_date > '2006-02-05'; 


SELECT company_name 
FROM customers
JOIN ORDERS
ON customer_code = customers.id 
WHERE  order_date > '2006-02-05';

上次查询没有子查询。使用连接的选项可能是最常见的形式。 SQL FIDDLE DEMO