今天SQL2000上实现了个随机查询几条的小程序。突然想到过几天后就要写个分组查询。然后查出仅有一条的一个挺复杂的存储过程。
命令涉及到至少4个表。感觉挺复杂的,有点不知道要怎么写。
在此简化表结构就提个核心问题,希望大家帮忙下。
表结构:
A表----父表
CompanyID      SawCompany     
1001        A公司
1002        B公司
1003        C公司
1008        D公司
1200        E公司B表----子表
ProdID     ProdName    CompanyID(A表的主键)
1           P1产品       1001
2           P2产品       1001
5           P3产品       1001
7           P4产品       1001
8           P8产品       1001
24          P0产品       1001
30          M1产品       1003
31          M2产品       1003
33          U2产品       1008
34          K1产品       1200
36          P3产品       1200
..............................
也就是父表跟明细表那我要的查询是
select  子表B的ProdName----要求B表相同的CompanyID,只能随机抽取一个产品出来。
综合现实多个表内链接查询要求。查询语句中不大可能再用distince来进行过滤重复字段。
各位有没有高效的查询方法。能贴出来吗?或者觉得太复杂的化。随机抽取也可以省掉。但相同的COmpanyID只能显示一条产品
表数据很大。不想用distince进行过滤
========================
汗,CSDN搞的灰色特效弄的我都没法把本贴发布在SQL 区。在.net区几天后版主请帮我转移贴下。

解决方案 »

  1.   

    Select TOP 1 * From TABLE Order By NewID()
      

  2.   

    create table tt(ProdID int,ProdName varchar(10),CompanyID varchar(10))
    insert into tt select 1,'P1产品','1001'
    insert into tt select 2,'P2产品','1001'
    insert into tt select 5,'P3产品','1001'
    insert into tt select 7,'P4产品','1001'
    insert into tt select 8,'P8产品','1001'
    insert into tt select 24,'P0产品','1001'
    insert into tt select 30,'M1产品','1003'
    insert into tt select 31,'M2产品','1003'
    insert into tt select 33,'U2产品','1008'
    insert into tt select 34,'K1产品','1200'
    insert into tt select 36,'P3产品','1200'select a.* from tt a where ProdID = 
    (select top 1 ProdID from tt where CompanyID = a.CompanyID order by newid()) 
      

  3.   


    create table tt(ProdID int,ProdName varchar(10),CompanyID varchar(10))
    insert into tt select 1,'P1产品','1001'
    insert into tt select 2,'P2产品','1001'
    insert into tt select 5,'P3产品','1001'
    insert into tt select 7,'P4产品','1001'
    insert into tt select 8,'P8产品','1001'
    insert into tt select 24,'P0产品','1001'
    insert into tt select 30,'M1产品','1003'
    insert into tt select 31,'M2产品','1003'
    insert into tt select 33,'U2产品','1008'
    insert into tt select 34,'K1产品','1200'
    insert into tt select 36,'P3产品','1200'
    select max(ProdID),
    max(ProdName),
    CompanyID
     from  tt
    group by CompanyID
    order by CompanyID