Ordering by a field not in the select statement in SQL

后端 未结 3 1899
独厮守ぢ
独厮守ぢ 2021-01-19 18:49

I need to create a query that pulls only the customer_no column (because the software restrictions are as such, and I can\'t code it externally). But I need to be able to so

相关标签:
3条回答
  • 2021-01-19 18:54

    This does not look like mysql.

    Anyway... you could try an ordered sub-select IE

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

    I hope this helps.

    0 讨论(0)
  • 2021-01-19 19:04

    Of course you can. Your query looks like SQL Server, where this will likely do what you want:

      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;
    

    The equivalent query in MySQL would look like:

      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;
    

    I removed the distinct because it may not be necessary. If it is, add it back in.

    0 讨论(0)
  • 2021-01-19 19:08

    Use a subquery that includes the column you're ordering by. Then the main query can just return the column you care about:

    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
    )
    
    0 讨论(0)
提交回复
热议问题