子查询有两个表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了子查询有两个表相关的知识,希望对你有一定的参考价值。

我有两张桌子:

__Table R_____

ID.....CustID....DATE
1......1.........2000-01-01
2......2.........2000-01-02
3......2.........2000-01-03
4......2.........2000-02-22
5......1.........2000-03-23

__Table Customers______

ID....NAME
1.....Lucas
2.....Michael

请问,如何从每个客户的NAME返回最后一个DATE的SELECT? (这条路):

Lucas......2000-03-23
Michael....2000-02-22
答案

您可以使用:

select c.name,  max(r.date) 
from table_customers c
join table_r r on r.custid = c.id
group by c.id,  c.name;
另一答案

您需要的选择,使用MAX将返回最新日期:

SELECT customer.name, MAX(r.date)

来自两个表的join

FROM r INNER JOIN customer ON r.custid = customer.id

但是,如果您需要每个客户的最新日期,您需要group它:

GROUP BY r.custid;
另一答案
select c.name, r.date 
from table_customers c 
join table_r r on r.custid = c.id 
ORDER BY r.date DESC 
LIMIT 2 ;

以上是关于子查询有两个表的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00907: 两个子查询的左连接缺少右括号

sql合并两个子查询

关于MySQL的关联查询

包包大人小灶 子查询的小秘密

运行多个子查询

在两个表中使用子选择优化查询