1:类似(你没有说清楚,a与b之间的联系怎样?)
select * from  a where a.id in 
(select top 1  id from a where type=a.type)

解决方案 »

  1.   

    对不起,忘记说了,a和b之间只是普通的ID关联。即a.customerid=B.ID
    同时你的回答行不行呀?我怎么感觉只会返回一条呀?
      

  2.   

    题目不清楚:
    1、什么是每一类?总共有哪几类啊,总应该有分组的条件吧。
    2、返回的四条记录中再加上该类型的合计值,是要把这四条记录求和还是加上每一类的求和?
    3、必须使用一个SQL 语句吗?
      

  3.   

    再对不起一次,我明白你的回答了,是我说的不够清楚,应该是这样:
    我现在有一组查询如下:
    ----------------------
    1 298 'String1'
    2 298 'String2'
    3 304 'String1'
    4 503 'String1'
    关键字是298,但有两个联系人,我只要一个,即把第二行去掉即可。而实际上是没有真正的TYPE的。谢谢!
      

  4.   

    第三次:
    1、类别实际上是关键字,不知道有几类
    2、合计值是重复关键字的合计值,没有重复关键字的不合计;
    3、应聘题上没说用多少条SQL语句,不过根据空白应该只有四行代码可以写
      

  5.   

    select col1,a.col2,col3 from table a,(select col2,min(col1) as col1 from table group by col2) b
    where a.col1=b.col1 and a.col2=b.col2
      

  6.   

    SELECT * 
            ,(select count(*) from T where type = t1.type)
        FROM T t1
       WHERE id IN (SELECT TOP 1 id
                          FROM T
                         WHERE t1.Type = type 
                               and type='3,7,9,12'
                        )
      

  7.   

    《一道褒贬不一的 SQL 考试题》
    http://www.csdn.net/Develop/read_article.asp?id=1598910.列印各科成绩前三名的记录:(不考虑成绩并列情况)
      学生ID,学生姓名,课程ID,课程名称,成绩,教师ID,教师姓名  如果仅从成绩考虑前三名的人,利用相关子查询的知识: SELECT * 
       FROM 成绩表 t1
      WHERE 成绩 IN (SELECT TOP 3 成绩
                   FROM 成绩表
                   WHERE t1.课程id = 课程id
                ORDER BY 成绩 DESC
                  )
    ORDER BY t1.课程id  这样查询的结果各科成绩前三名的记录数应该大于等于三,因为可能有并列情况,
      如果小于三自然是该门课还没有那么多人考试!
      如果不考虑并列情况,严格控制各科只列印三条记录,则使用"学生id"构造相关
      子查询条件亦可:  SELECT * 
        FROM 成绩表 t1
       WHERE 学生id IN (SELECT TOP 2 学生id
                          FROM 成绩表
                         WHERE t1.课程id = 课程id
                      ORDER BY 成绩 DESC
                        )
    ORDER BY t1.课程id  如果利用第 10 题的思路也可实现该应用。
      

  8.   

    如果确定同一关键字虽然有多个联系人,但有联系人都不同时, 可用:
    SELECT * 
    FROM t1 a
    WHERE t1.联系人 = (SELECT min(联系人) FROM t1 b WHERE b.关键字 = a.关键字)或者根据条件将min改为max
      

  9.   

    1   Select * From 
         a,b b1
        where a.cutomerid='3' and b.type='3,7,9,12'
        and id in (select top 1 id from b where type=b1.type)2   Select *,(select count(*) from T where type = t1.type) TOT From 
         a,b b1
        where a.cutomerid='3' and b.type='3,7,9,12'
        and id in (select top 1 id from b where type=b1.type)
      

  10.   

    各位老兄,像OpenVMS(半部伦语) 所说的可以实现我的要求,但我理解把select语句放在Where条件中是不是每条记录的Where过滤都要产生一次查询。我有五万条记录,这样的SQL语句是不是不写也罢?我现在不方便做测试,各位能不能给我讲解一下效率总题?
      

  11.   

    b.type='3,7,9,12' ???
    还是:
    b.type in ('3','7','9','12')????