日期:2014-05-19  浏览次数:20558 次

关于在数据库取最大编号值的问题,请指教?
如何将以下数据取最大编号值?

主表1表结构:
编号 号码 套餐名称 最后操作编号
201 000000112 A包 104
202 000000112 B包 106
203 000000112 C包 107

明细表2表结构:
编号 号码 收看日期 ...
101 000000112 ... ...
102 000000112 ... ...
103 000000112 ... ...
104 000000112 ... ...
105 000000112 ... ...
106 000000112 ... ...
107 000000112 ... ...


需要经查询处理后结果:
104 000000112 A包
106 000000112 B包
107 000000112 C包

请大家别推荐这种方法:
SELECT     MAX(a.编号)   AS   编号,a.号码,b.套餐名称
FROM   表1   a   JOIN   表2   b   ON   a.号码=b.号码
GROUP   BY   a.号码,b.套餐名称

因为得出来的结果是:
107 000000112 A包
107 000000112 B包
107 000000112 C包

------解决方案--------------------
對嘛,少了關聯條件。

稍微修改下你的代碼,即可得到你要的結果

SELECT MAX(b.编号) AS 编号, a.号码, a.套餐名称
FROM 表1 a JOIN 表2 b ON a.号码=b.号码 And a.套餐名称 = b.套餐包
GROUP BY a.号码, a.套餐名称
------解决方案--------------------
Create Table 表1
(编号 Char(3),
号码 Char(9),
套餐名称 Varchar(10))
Insert 表1 Select '201 ', '000000112 ', 'A包 '
Union All Select '202 ', '000000112 ', 'B包 '
Union All Select '203 ', '000000112 ', 'C包 '

Create Table 表2
(编号 Char(3),
号码 Char(9),
套餐包 Varchar(10))
Insert 表2 Select '101 ', '000000112 ', 'A包 '
Union All Select '102 ', '000000112 ', 'B包 '
Union All Select '103 ', '000000112 ', 'C包 '
Union All Select '104 ', '000000112 ', 'A包 '
Union All Select '105 ', '000000112 ', 'B包 '
Union All Select '106 ', '000000112 ', 'B包 '
Union All Select '107 ', '000000112 ', 'C包 '
GO
SELECT a.编号, a.号码, a.套餐名称, MAX(b.编号) AS 最后操作编号
FROM 表1 a JOIN 表2 b ON a.号码=b.号码 And a.套餐名称 = b.套餐包
GROUP BY a.编号, a.号码, a.套餐名称
GO
Drop Table 表1, 表2
--Result
/*
编号 号码 套餐名称 最后操作编号
201 000000112 A包 104
202 000000112 B包 106
203 000000112 C包 107
*/