3.
select count(id),name from table
group by name
having count(*)>=2

解决方案 »

  1.   

    --3.查询出所有拥有2个ID或更多的NAMEselect name from 表 group by name count(id)>1
      

  2.   

    3.select name ,count(id) from table group by name having count(*)>1
      

  3.   

    --对于第二个问题的示例--创建一个测试表
    select * into tb from syscolumns
    go--执行下面的语句
    select * from tb a,tb b with(tablockx)
    select getdate()
    go--删除测试
    drop table tb/*========================================*/
    --新开一个窗口,执行下面的语句:
    select * from tb
    select getdate()
      

  4.   

    对于第2题,我听说答案是要加上FOR UPDATE关键字,但不知到底怎么实现?谁知道啊?
    第1题意思好像是说如果某个列已经定义了索引,怎么在查询语句中利用索引查询?
      

  5.   

    --如果某个列已经定义了索引,怎么在查询语句中利用索引查询?select * from 表 with(index(索引名))
      

  6.   

    加上FOR UPDATE关键字??那就不知道是什么意思了,楼主最好先把问题描述清楚
      

  7.   


    2.        为了防止在查询记录的时候被其他用户更改记录,应该采用什么方法,如何用查询语句实现该方法    添加一个“时间戳”类型的字段就可以了timestamp.timestamp 这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp 一般用作给表行加版本戳的机制。存储大小为 8 字节。一个表只能有一个 timestamp 列。每次插入或更新包含 timestamp 列的行时,timestamp 列中的值均会更新。这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用。对行的任何更新都会更改 timestamp 值,从而更改键值。3.        现有一张表,有两个字段,ID,NAME。ID为主键。如果希望查询出所有拥有2个ID或更多的NAME,查询语句应该如何写
         应该可以用分组的吧,如果NAME 都一样的话。
      

  8.   

    1.查询语句中的索引如何匹配 
      如果是问,SQL SERVER 如何判定使用什么索引,那就罗嗦了。有很多规则,我也一直再测试整理。不久会有结果,大致的过程,它会分析查询用到的where条件 ,group by, 还有选择的列等等,在SYSINDEXES这张表里进行匹配,判定他的分布率,那张记录了sqlserver对于各个索引以及它自动创建的临时索引的数据情况,从而决定使用什么索引。并没有最优的算法,只要普遍的形式。这里面有个查询率的问题,不说了,几个字好像说不清楚,改天开个大帖子大家一起来。