通过现场未在SQL SELECT语句排序

问题描述 投票:2回答:3

我需要创建一个拉只有CUSTOMER_NO列的查询(因为软件限制是这样的,我不能从外部代码时)。但我需要能够将数据通过create_dt排序(反向)列。该代码/ SQL是制约我在使用,以便通过一些数据已经出现的int select语句排序,因为以下。

我不能拥有它出现在那里 - 是有没有解决这个办法吗?

 Select Distinct top 3500 a.customer_no 
  From T_CUSTOMER a  WITH (NOLOCK)
  JOIN (Select a1.customer_no From VXS_CUST_TKW a1 WITH (NOLOCK) Where a1.tkw in (141)) as e ON      e.customer_no = a.customer_no
  Where 1 = 1
 order by a.create_dt desc
sql tsql join sql-order-by
3个回答
5
投票

当然可以。您的查询看起来像SQL服务器,在那里你想要的东西,这将有可能做的事:

  Select top 3500 a.customer_no 
  From T_CUSTOMER a  WITH (NOLOCK) JOIN
       (Select a1.customer_no
        From VXS_CUST_TKW a1 WITH (NOLOCK)
        Where a1.tkw in (141)
       ) e
       ON e.customer_no = a.customer_no
  Where 1 = 1
  group by a.customer_no
  order by max(a.create_dt) desc;

在MySQL等效查询将如下所示:

  Select a.customer_no 
  From T_CUSTOMER a JOIN
       (Select a1.customer_no
        From VXS_CUST_TKW a1 
        Where a1.tkw in (141)
       ) e
       ON e.customer_no = a.customer_no
  Where 1 = 1
  order by a.create_dt desc
  limit 3500;

我删除了distinct,因为它可能没有必要。如果是,加回。


1
投票

这看起来并不像MySQL。

反正...你可以尝试有序子选择IE

From (select * from T_CUSTOMER order by create_dt) a WITH (NOLOCK)

我希望这有帮助。


0
投票

使用子查询,包括你的排序列。然后,主查询可以只返回你所关心的列:

SELECT customer_no
FROM (
    Select top 3500 a.customer_no, a.create_dt
      From T_CUSTOMER a  WITH (NOLOCK) JOIN
           (Select a1.customer_no
            From VXS_CUST_TKW a1 WITH (NOLOCK)
            Where a1.tkw in (141)
           ) e
           ON e.customer_no = a.customer_no
      Where 1 = 1
      order by a.create_dt desc
)
© www.soinside.com 2019 - 2024. All rights reserved.