求一条SQL查询语句

jinning13 2006-04-25 10:21:02
表1
文章ID 作者 发表时间
1 fssds 1985-5-5
2 ffsdfs 1990-5-12

表2
文章ID 更新时间
1 1988-8-8
1 1990-8-5

想要查询到像下面一样:
文章ID 作者 最后更新时间
1 fssds 1990-8-5
2 ffsdfs 1990-5-12

也就是没有更新时间是选择发表的时间
...全文
691 48 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
ll_e_mail 2006-04-27
  • 打赏
  • 举报
回复
DECLARE @t TABLE(id INT,Author char(8),PublishTime DateTime)
INSERT @t SELECT 01,'张三','2005-05-02'
INSERT @t SELECT 02,'李四','2005-03-01'
INSERT @t SELECT 03,'王五','2006-05-29'

DECLARE @t1 TABLE(id INT,UpdateTime DateTime)
INSERT @t1 SELECT 01,'2006-02-22'
INSERT @t1 SELECT 01,'2006-08-26'
INSERT @t1 SELECT 02,'2006-05-23'
--也就是没有更新时间是选择发表的时间
-------
SELECT a.id,a.Author,

ISNULL(CONVERT(char(10),c.UpdateTime,102),Convert(char(10),a.PublishTime,102))更新时间

FROM @t a

Left JOIN

(SELECT id, MAX(UpdateTime) UpdateTime From @t1 Group by Id) c

ON a.ID = c.id

----结果
id Author 更新时间
----------- -------- ----------
1 张三 2006.08.26
2 李四 2006.05.23
3 王五 2006.05.29
wwwwb 2006-04-27
  • 打赏
  • 举报
回复
SELECT B105L.文章ID, B105L.发表时间, B105L.作者,
IIF(ISNULL((SELECT TOP 1 更新时间 FROM B105M WHERE 文章ID=B105L.文章ID ORDER BY 更新时间 desc )),发表时间,
(SELECT TOP 1 更新时间 FROM B105M WHERE 文章ID=B105L.文章ID ORDER BY 更新时间 desc))
FROM B105L;
Edisoncat 2006-04-26
  • 打赏
  • 举报
回复
select A.ID,A.cTitle,A.cDate,B.cUpDate from A a left join (select ID,MAX(cUpDate) as cUpDate from B group by ID) b on a.ID=b.ID

这个不错
OracleRoob 2006-04-26
  • 打赏
  • 举报
回复
--楼主试试这个:Access环境

select a.文章id, a.作者, iif(nz(c.更新时间之max,"")="" , a.发表时间,c.更新时间之max) as 最后更新时间
from 表1 as a
left join (select b.文章id, max(b.更新时间) as 更新时间之max from 表2 as b group by b.文章id) as c on a.文章id = c.文章id;

不知道楼主要的是Access,还是SQL Server?
OracleRoob 2006-04-26
  • 打赏
  • 举报
回复
--楼主试试这个

select a.文章id, a.作者, iif(nz(c.更新时间之max,"")="" , a.发表时间,c.更新时间之max) as 最后更新时间
from 表1 as a
left join (select b.文章id, max(b.更新时间) as 更新时间之max from 表2 as b group by b.文章id) as c on a.文章id = c.文章id;
dengqiannet 2006-04-26
  • 打赏
  • 举报
回复
select t.id,t.name,(case when u.dt is null then t.dt else u.dt end)as updatedt from testta t left join (select id,max(dt) as dt from updatedate group by id) as u on t.id=u.id

dt代表更新时间
atree107 2006-04-26
  • 打赏
  • 举报
回复
如果不是限制一条语句
我到有个好办法
select * into #sub from t1

update a
set a.publishdate=b.updatedate
from #sub a, (select ID,MAX(updatedate)as updatedate from t2 group by id) b
where a.id=b.id

select * from #sub
kokubo_wing 2006-04-26
  • 打赏
  • 举报
回复
帮顶一下
jinning13 2006-04-25
  • 打赏
  • 举报
回复
用于函数参数的个数不对 在查询表达式 'IsNull(B.sendtime,A.sendtime)' 中。
异常详细信息: System.Data.OleDb.OleDbException: 用于函数参数的个数不对 在查询表达式 'IsNull(B.sendtime,A.sendtime)' 中。

这是为什么?
NickyYang 2006-04-25
  • 打赏
  • 举报
回复
沒錯,可用isnull,寫得太急,糾正
paoluo 2006-04-25
  • 打赏
  • 举报
回复
azhoulia(回忆录.NET),語句錯誤,不是樓主的要求。
paoluo 2006-04-25
  • 打赏
  • 举报
回复
--建立測試環境
Create Table 表1
(文章ID Int,
作者 Varchar(10),
发表时间 Varchar(10))

Create Table 表2
(文章ID Int,
更新时间 Varchar(10))
--插入數據
Insert 表1 Select 1, 'fssds', '1985-5-5'
Union All Select 2, 'ffsdfs', '1990-5-12'

Insert 表2 Select 1, '1988-8-8'
Union All Select 1, '1990-8-5'
--測試
Select
A.文章ID,
A.作者,
IsNull(B.更新时间,A.发表时间) As 最后更新时间
from 表1 A
Left Join (Select 文章ID,Max(更新时间) As 更新时间 from 表2 Group By 文章ID) B
On A.文章ID=B.文章ID
--刪除測試環境
Drop Table 表1,表2
--結果
/*
文章ID 作者 最后更新时间
1 fssds 1990-8-5
2 ffsdfs 1990-5-12
*/
paoluo 2006-04-25
  • 打赏
  • 举报
回复
SQL自帶有IsNull函數,沒必要用case來處理。


Select
A.文章ID,
A.作者,
IsNull(B.更新时间,A.发表时间) As 最后更新时间
from 表1 A
Left Join (Select 文章ID,Max(更新时间) As 更新时间 from 表2 Group By 文章ID) B
On A.文章ID=B.文章ID
周力 2006-04-25
  • 打赏
  • 举报
回复

select A.ID,A.cTitle,A.cDate,B.cUpDate from A a left join (select ID,MAX(cUpDate) as cUpDate from B group by ID) b on a.ID=b.ID

帮你测试写出来了
NickyYang 2006-04-25
  • 打赏
  • 举报
回复
這個都行
select 表1.文章ID,表1.作者,(case when A.更新時間 is null then 發表時間 else A.更新時間 end) as 最後更新時間 from 表1
left join (select 文章ID,max(更新時間) as 更新時間 from 表2 group by 文章ID) A on 表1.文章ID=A.文章ID
NickyYang 2006-04-25
  • 打赏
  • 举报
回复
select 文章ID,作者,(case when 更新時間 is null then 發表時間 else 更新時間 end) as 最後更新時間 from (
select 表1.文章ID,表1.作者,表1.發表時間,max(表2.更新時間) as 更新時間 from 表1
left join 表2 on 表1.文章ID=表2.文章ID
group by 表1.文章ID,表1.作者,表1.發表時間
)A
paoluo 2006-04-25
  • 打赏
  • 举报
回复
NickyYang(醉雪枫叶) ( ) ,他的不是MS SQL。
NickyYang 2006-04-25
  • 打赏
  • 举报
回复
先拋開SQL的複雜程度,你拿一條最簡單的select去看看你的程序有沒有問題
jinning13 2006-04-25
  • 打赏
  • 举报
回复
插入断点后也是一样的的错误
jinning13 2006-04-25
  • 打赏
  • 举报
回复
不懂,可不可以说清楚点呀
加载更多回复(28)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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