表结构:CREATE TABLE [dbo].[Demand](
[ID] [int] IDENTITY(1,1) NOT NULL,
[BoxID] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[PlatID] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[OriginName] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[CompanyAddress] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[ProjectName] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[OriginTec] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[OriginContacts] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
[SysPlatID] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[SysPlatName] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[ResolutionID] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[IsTouch] [bit] NULL,
[Keyboard] [nvarchar](300) COLLATE Chinese_PRC_CI_AS NULL,
[IsTFin] [bit] NULL,
[IsNeedInlay] [bit] NULL,
[InlayGame] [varchar](300) COLLATE Chinese_PRC_CI_AS NULL,
[OriginBillingType] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[IsNeedG] [bit] NULL,
[IsDynamic] [bit] NULL,
[GGameID] [varchar](300) COLLATE Chinese_PRC_CI_AS NULL,
[OriginSpecialContent] [nvarchar](300) COLLATE Chinese_PRC_CI_AS NULL,
[AppointmentDate] [datetime] NULL,
[ProjectEndDate] [datetime] NULL,
[Note] [nvarchar](300) COLLATE Chinese_PRC_CI_AS NULL,
[Billingway] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[BillingTime] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[AssignedClient] [int] NULL,
[CurrentHead] [int] NULL,
[Userid] [int] NULL,
[CreateTime] [datetime] NULL,
[LastUpdateTime] [datetime] NULL,
 CONSTRAINT [PK_DEMAND] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]CREATE TABLE [dbo].[SupplementDemand](
[ID] [int] IDENTITY(1,1) NOT NULL,
[DemandID] [int] NULL,
[ManufacturerName] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[OriginID] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[Date] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[ProjectID] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[DemandPerson] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[Post] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[Mobile] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[Email] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[IM] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[DemandDate] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[DemandDes] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
[Rate] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[AssignedClient] [int] NULL,
[Res] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
[CreateUser] [int] NULL,
[CreateTime] [datetime] NULL,
 CONSTRAINT [PK_SUPPLEMENTDEMAND] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
现在有2个表,demand 和Supplementdemand表,demand表是主表,另个是子表,现在我想查的是:
查询主表信息,根据子表的CreateTime排序

解决方案 »

  1.   

    select
      a.*
    from
      demand a join Supplementdemand b
    on
      a.id=b.[DemandID]
    order by
      b.CreateTime
      

  2.   

    select a.* from Demand a inner join SupplementDemand b
    on a.id=b.id
    order by b.id
      

  3.   

    那你两个表关联起来,注意主表和子表记录关联的条件,如果是一对多的情况楼主要选其中一条的createtime来排序,也存在没有子表记录的情况。类似select a.*
    from demand a 
       left join (select DemandID,max(CreateTime) CreateTime 
                  from Supplementdemand group by DemandID)
       on a.ID = b.DemandID
    order by (case when b.DemandID is null then 1 else 0 end),b.CreateTime