日期:2014-05-16  浏览次数:20910 次

求教 联合查询分页出现重复值
===================================================
分页方案二:(利用ID大于多少和SELECT TOP分页)
语句形式:  
SELECT TOP 2 *
FROM TestTable
WHERE (ID >
  (SELECT MAX(id)
  FROM (SELECT TOP 4 id
  FROM TestTable
  ORDER BY id) AS T))
ORDER BY ID
===================================================
以上测试了输出的和TOP 2指定的数目一样(没有联合查询)


为了测试我简化成这样(不简化测试也如此,加了一个表后)
SELECT TOP 1 *
FROM TestTable_1,TestTable_2
WHERE TestTable_1.ID >1
ORDER BY TestTable_1.ID

TestTable_1
1. 西瓜,1
2. 香蕉,1
3. 苹果,1
4. 电视,2
5,电脑,2
TestTable_2
1.水果类
2.电器类

TestTable_1是信息表TestTable_2是分类表
TestTable_1的ID是主键,无重复还有个TestTable_2_ID是牵扯着TestTable_2表的

当按照以上查询时候会出现
2.香蕉,1 ,1,水果类
2.香蕉,1 ,1,水果类

而不是就一条
2.香蕉,1 ,1,水果类

如何实现。。。试了很多都没办法(最后总结出,重复的数量和分类表行数有关系,如果分类表行数5的话,就会输出5个)。

在弱弱的问一句,这样的查询效率如何,指的是加上Where字段比如说TestTable_1.TestTable_2_ID=TestTable_2.ID
..

------解决方案--------------------
SQL code
SELECT TOP 1 *
FROM TestTable_1 inner join TestTable_2 on TestTable_1.category=TestTable_2.category
WHERE TestTable_1.ID >1
ORDER BY TestTable_1.ID