inner join如果只选择另一个表里的某一行

宝_爸 2011-06-01 05:17:50
例如有Products和Orders两个表。
Orders中的ProductID是外键。

像选择Products和Orders中最近日期的order。同时还要返回没有order的product。
例如

Prodcuts表
ProductId Name
1 Cat
2 Dog
3 Rabbit

Orders表
OrderId ProductId OrderDate
1 1 20110505
2 1 20110506
3 1 20110507
4 2 20110505

想要的结果
ProductId Name OrderID OrderDate
1 Cat 3 20110507
2 Dog 4 20110505
3 Rabbit NULL NULL

刚面试回来,脑子一片混乱。。。。
...全文
230 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongjian39400 2011-06-01
  • 打赏
  • 举报
回复
select a.ProductId,a.Name,max(orderdate)'OrderDate' from Products a left join Orders b
on a.ProductId =b.ProductId
group by a.ProductId,name
Spade_J 2011-06-01
  • 打赏
  • 举报
回复

CREATE TABLE Prodcuts表([ProductId] INT,[Name] NVARCHAR(6))
INSERT Prodcuts表
SELECT 1,N'Cat' UNION ALL
SELECT 2,N'Dog' UNION ALL
SELECT 3,N'Rabbit'
CREATE TABLE Orders表([OrderId] INT,[ProductId] INT,[OrderDate] DATETIME)
INSERT Orders表
SELECT 1,1,'20110505' UNION ALL
SELECT 2,1,'20110506' UNION ALL
SELECT 3,1,'20110507' UNION ALL
SELECT 4,2,'20110505'
GO
SELECT
a.ProductId,
a.Name,
(SELECT TOP 1 b.OrderId FROM dbo.Orders表 b WHERE a.ProductId=b.ProductId ORDER BY OrderDate desc) AS orderid,
(SELECT TOP 1 b.OrderDate FROM dbo.Orders表 b WHERE a.ProductId=b.ProductId ORDER BY OrderDate desc) AS orderDate
FROM Prodcuts表 a
旅行者I号 2011-06-01
  • 打赏
  • 举报
回复
3 Rabbit NULL NULL
看这一行就知道不能用inner join
要用外连接1,2楼的应该没问题
小金牛儿 2011-06-01
  • 打赏
  • 举报
回复
你这个属于求 最离当前时间最近的一条记录
SELECT * FROM 已知表 AS 表
INNER JOIN
(
SELECT id,max(日期字段) as 最大日期 FROM 已知表
GROUP BY id
) AS T ON T.id = 表.id AND 表.日期 = t.最大日期

楼主的问题 我也遇到过 我提供你1个 我的解决方案吧 一起分享下!
investruth 2011-06-01
  • 打赏
  • 举报
回复
select p.ProductID,p.Name,max(o.OrderId),max(o.OrderDate) from @Products p left join @Orders o on p.ProductID=o.ProductId group by p.ProductID,p.Name
Billy 2011-06-01
  • 打赏
  • 举报
回复
select a.ProductId,a.name,b.orderid,b.orderdate
from Prodcuts a left join
(select productid,max(orderid) as orderid,max(orderdate) as orderdate
from Orders group by productid) b on on a.ProductId=b.ProductId

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧