数据表结构;
tblcompany:
companyid       title
 1             公司1
 2             公司2
 3             公司3tblproduct:
productid   title              companyid
 1          公司1的产品1           1
 2          公司1的产品2           1
 3          公司2的产品1           2
 4          公司2的产品2           2
 5          公司2的产品3           2
 6          公司3的产品1           3
 7          公司3的产品2           3我想要的结果是:
每个公司的产品不要在一起
查询出来的结果如下:productid   title              companyid
  1          公司1的产品1           1
  3          公司2的产品1           2
  6          公司3的产品1           3
  2          公司1的产品2           1
  4          公司2的产品2           2
  7          公司3的产品2           3
  5          公司2的产品3           2谢谢各位!

解决方案 »

  1.   

    select * from tblproduct order by title,companyid
      

  2.   

    select * from tblproduct
    order by REVERSE(title)
      

  3.   

    select * from tblproduct order by right(title,1),companyid
      

  4.   

    select * from tblproduct order by right(title,1),companyid,这样是可以的,上面的select * from tblproduct
    order by REVERSE(title),companyid也是可以的
      

  5.   

    Select * from @tblproduct a 
    order by case when exists(select 1 from @tblproduct
     where companyid=a.companyid and a.productid>productid) 
     then a.productid*POWER(10,8)+a.companyid else a.companyid end
      

  6.   

    Create Table tblproduct
    (productid Int,
     title Nvarchar(100),
     companyid Int)
    Insert tblproduct Select  1,          N'公司1的产品1',           1
    Union All Select  2,          N'公司1的产品1',           1
    Union All Select  3,          N'公司2的产品1',           2
    Union All Select  4,          N'公司2的产品2',           2
    Union All Select  5,          N'公司2的产品3',           2
    Union All Select  6,          N'公司3的产品1',           3
    Union All Select  7,          N'公司3的产品2',           3
    GO
    --方法一
    Select * From tblproduct A Order By (Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid)
    --方法二
    Select B.productid,title,companyid From
    (Select ID=(Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid),* From tblproduct A)B
    Order By ID
    GO
    Drop Table tblproduct
    --Result
    /*
    productid title companyid
    1 公司1的产品1 1
    3 公司2的产品1 2
    6 公司3的产品1 3
    7 公司3的产品2 3
    4 公司2的产品2 2
    2 公司1的产品2 1
    5 公司2的产品3 2
    */
      

  7.   

    對,不好意思,這個沒注意,加上一個排序,就OK。Create Table tblproduct
    (productid Int,
     title Nvarchar(100),
     companyid Int)
    Insert tblproduct Select  1,          N'公司1的产品1',           1
    Union All Select  2,          N'公司1的产品1',           1
    Union All Select  3,          N'公司2的产品1',           2
    Union All Select  4,          N'公司2的产品2',           2
    Union All Select  5,          N'公司2的产品3',           2
    Union All Select  6,          N'公司3的产品1',           3
    Union All Select  7,          N'公司3的产品2',           3
    GO
    --方法一
    Select * From tblproduct A Order By (Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid),companyid
    --方法二
    Select B.productid,title,companyid From
    (Select ID=(Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid),* From tblproduct A)B
    Order By ID,companyid
    GO
    Drop Table tblproduct
    --Result
    /*
    productid title companyid
    1 公司1的产品1 1
    3 公司2的产品1 2
    6 公司3的产品1 3
    7 公司3的产品2 3
    4 公司2的产品2 2
    2 公司1的产品2 1
    5 公司2的产品3 2
    */
      

  8.   

    to  WangZWang(先来) 
    出來的結果
    1
    2
    3
    1
    2
    2
    3
    與樓主要的還是不一樣...
      

  9.   

    結果貼錯了Create Table tblproduct
    (productid Int,
     title Nvarchar(100),
     companyid Int)
    Insert tblproduct Select  1,          N'公司1的产品1',           1
    Union All Select  2,          N'公司1的产品2',           1
    Union All Select  3,          N'公司2的产品1',           2
    Union All Select  4,          N'公司2的产品2',           2
    Union All Select  5,          N'公司2的产品3',           2
    Union All Select  6,          N'公司3的产品1',           3
    Union All Select  7,          N'公司3的产品2',           3
    GO
    --方法一
    Select * From tblproduct A Order By (Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid),companyid
    --方法二
    Select B.productid,title,companyid From
    (Select ID=(Select Count(*) From tblproduct Where companyid=A.companyid And productid<=A.productid),* From tblproduct A)B
    Order By ID,companyid
    GO
    Drop Table tblproduct
    --Result
    /*
    productid title companyid
    1 公司1的产品1 1
    3 公司2的产品1 2
    6 公司3的产品1 3
    2 公司1的产品2 1
    4 公司2的产品2 2
    7 公司3的产品2 3
    5 公司2的产品3 2
    */
      

  10.   

    谢谢 paoluo,在北京吗,有空请您吃饭了!
    谢谢!
      

  11.   

    刚才我也写了一个,当写完后看到了paoluo的写法,自觉笨拙就不发上来现丑了..