--3.查询出所有拥有2个ID或更多的NAMEselect name from 表 group by name count(id)>1
3.select name ,count(id) from table group by name having count(*)>1
--对于第二个问题的示例--创建一个测试表 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()
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()
第1题意思好像是说如果某个列已经定义了索引,怎么在查询语句中利用索引查询?
2. 为了防止在查询记录的时候被其他用户更改记录,应该采用什么方法,如何用查询语句实现该方法 添加一个“时间戳”类型的字段就可以了timestamp.timestamp 这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp 一般用作给表行加版本戳的机制。存储大小为 8 字节。一个表只能有一个 timestamp 列。每次插入或更新包含 timestamp 列的行时,timestamp 列中的值均会更新。这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用。对行的任何更新都会更改 timestamp 值,从而更改键值。3. 现有一张表,有两个字段,ID,NAME。ID为主键。如果希望查询出所有拥有2个ID或更多的NAME,查询语句应该如何写
应该可以用分组的吧,如果NAME 都一样的话。
如果是问,SQL SERVER 如何判定使用什么索引,那就罗嗦了。有很多规则,我也一直再测试整理。不久会有结果,大致的过程,它会分析查询用到的where条件 ,group by, 还有选择的列等等,在SYSINDEXES这张表里进行匹配,判定他的分布率,那张记录了sqlserver对于各个索引以及它自动创建的临时索引的数据情况,从而决定使用什么索引。并没有最优的算法,只要普遍的形式。这里面有个查询率的问题,不说了,几个字好像说不清楚,改天开个大帖子大家一起来。