+ -
当前位置:首页 → 问答吧 → 多表关联的一个问题

多表关联的一个问题

时间:2011-12-24

来源:互联网

主表和从表 一对多的关系

现在需要在取出主笔数据的数据 同时取出 从表对应数据中 列 time 值最大的一个

请问怎么写语句

作者: ayun00   发布时间: 2011-12-24

SQL code
select a.*,b.* from t1 a inner join t2 b on a.id=b.aid 
where not exists(select 1 from t2  where aid=b.aid and time>b.time)

作者: qianjin036a   发布时间: 2011-12-24

SQL code
;
WITH    tmp
          AS ( SELECT   * ,
                        rn = row_number() OVER ( PARTITION BY col ORDER BY time DESC )
               FROM     从表
             )
    SELECT  *
    FROM    主表 a ,
            tmp b
    WHERE   a.col = b.col
            AND b.rn = 1

作者: wufeng4552   发布时间: 2011-12-24

这个实在看不习惯
引用 2 楼 wufeng4552 的回复:
SQL code

;
WITH tmp
AS ( SELECT * ,
rn = row_number() OVER ( PARTITION BY col ORDER BY time DESC )
FROM 从表
)
SELECT ……

作者: ayun00   发布时间: 2011-12-24

我还关联了其他的表 也能这么用吗

引用 1 楼 qianjin036a 的回复:
SQL code

select a.*,b.* from t1 a inner join t2 b on a.id=b.aid
where not exists(select 1 from t2 where aid=b.aid and time>b.time)

作者: ayun00   发布时间: 2011-12-24

引用 3 楼 ayun00 的回复:
这个实在看不习惯

引用 2 楼 wufeng4552 的回复:
SQL code

;
WITH tmp
AS ( SELECT * ,
rn = row_number() OVER ( PARTITION BY col ORDER BY time DESC )
FROM 从表
)
SELECT ……

要学着习惯

作者: wufeng4552   发布时间: 2011-12-24

WITH tmp
AS ( SELECT * ,
rn = row_number() OVER ( PARTITION BY col ORDER BY time DESC )
FROM 从表
)
SELECT ……

作者: oolinyu   发布时间: 2011-12-24

我是用通用分页存取过程调用 
这个不好加进去吧
另外用临时表 有晴天大大的语句效率高吗

引用 5 楼 wufeng4552 的回复:
引用 3 楼 ayun00 的回复:
这个实在看不习惯

引用 2 楼 wufeng4552 的回复:
SQL code

;
WITH tmp
AS ( SELECT * ,
rn = row_number() OVER ( PARTITION BY col ORDER BY time DESC )
FROM 从表
)
SELECT ……

要学着习惯

作者: ayun00   发布时间: 2011-12-24

效率高低,拿到查询窗口溜溜就知道了.

作者: qianjin036a   发布时间: 2011-12-24