选择返回表的最后一条记录

时间:2012-07-27 17:56:33

标签: sql sql-server

我来自一个带有一点mySQL的访问背景,所以当谈到SQL时我有点迷失。

以下是我正在使用的查询:

Select 
    tbl_AcerPFSSurveyIVR.NTlogin,
    tbl_AcerPFSSurveyIVR.Customer_Firstname,
    tbl_AcerPFSSurveyIVR.Customer_Lastname,
    tbl_AcerPFSSurveyIVR.CaseId,
    tbl_AcerPFSSurveyIVR.ContactNumber,
    CRM_TRN_ORDER.ORDER_PRICE,
    CRM_TRN_ORDER.ORDER_CREATEDDATE

这会返回正确的记录,但我想要最后一个......我知道我应该使用这样的东西......

SELECT TOP 1 * 
FROM table_Name 
ORDER BY unique_column DESC

我迷路的地方,如果我这么说的话,你只能做一个选择......所以如何整合这两个?在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

你想要的是:

SELECT TOP(1) 
  tbl_AcerPFSSurveyIVR.NTlogin,
  tbl_AcerPFSSurveyIVR.Customer_Firstname,
  tbl_AcerPFSSurveyIVR.Customer_Lastname,
  tbl_AcerPFSSurveyIVR.CaseId,
  tbl_AcerPFSSurveyIVR.ContactNumber,
  CRM_TRN_ORDER.ORDER_PRICE,
  CRM_TRN_ORDER.ORDER_CREATEDDATE
FROM
  tbl_AcerPFSSurveyIVR
JOIN CRM_TRN_ORDER
    ON tbl_AcerPFSSurveyIVR.CustomerId = CRM_TRN_ORDER.CUSTOMERID
ORDER BY
  CRM_TRN_ORDER.ORDER_CREATEDDATE DESC

注意:我编写了JOIN子句,因为我不知道你的架构。假设存在某种外键关系,您应该选择满足连接的实际列。否则,您只需要购买笛卡尔产品,这很可能不是您想要的。但是,您可以通过使用“FROM tbl_AcerPFSSurveyIVR,CRM_TRN_ORDER”替换上面的FROM ... JOIN子句来实现此目的。

答案 1 :(得分:0)

你试过了吗?

Select TOP (1)
tbl_AcerPFSSurveyIVR.NTlogin,
tbl_AcerPFSSurveyIVR.Customer_Firstname,
tbl_AcerPFSSurveyIVR.Customer_Lastname,
tbl_AcerPFSSurveyIVR.CaseId,
tbl_AcerPFSSurveyIVR.ContactNumber,
CRM_TRN_ORDER.ORDER_PRICE,
CRM_TRN_ORDER.ORDER_CREATEDDATE 
FROM Table_Name ORDER BY unique_Column DESC

这包括上一个查询中的前1个,并按降序同时过滤请求。我理所当然地认为第一个SELECT来自table_name