0

我有两张桌子——阿尔法和贝塔。我正在使用对 BETA 的查询结果对 ALPHA 进行外部查询。

SELECT  a,b 
FROM    alpha 
WHERE   a IN(
    SELECT a 
    FROM   beta 
    WHERE  some_condition 
    ORDER  BY c DESC
);

现在我的问题是我需要维护DESC ORDER最终结果,但由于我无法访问c表格alpha,我无法以所需的顺序显示结果。

有没有办法在外部查询中使用内部查询顺序序列。我无法更改任何一个表的结构。

4

2 回答 2

1

您不必为了允许对行进行排序而更改表的结构,您只需要对JOIN表进行访问,这样您就可以访问另一个表中的列并保留ORDER.

SELECT  DISTINCT al.a, al.b
FROM    alpha al
        INNER JOIN Beta be
            ON al.a = be.a
WHERE   be. -- some condition
ORDER   BY be.c DESC
于 2013-09-04T07:58:03.150 回答
0

子查询中的 order by 子句对您的方案没有任何影响。

您需要的是连接框架,而不是子查询框架。您需要使用公共字段连接 alpha 和 beta 表,在创建连接后,alpha 和 beta 表中的所有列都可用,然后排序很容易。

我试图在连接框架中更改您的查询。SELECT alpha.a,b FROM alpha inner join beta on alpha.[somefield] = beta.[somefield] WHERE some_condition ORDER BY beta.c DESC;

于 2013-09-04T08:05:52.290 回答