社区
MS-SQL Server
帖子详情
两道SQL面试题
DengXingJie
2007-05-16 11:04:17
1.表中某一字段是自动增长型,但现在出现了相同的数据(如何出现的在此不讨论),要怎样找出其中相同的记录,用最少三种方法写出SQL语句。
2.死锁是如何产生,怎样避免?
...全文
304
9
打赏
收藏
两道SQL面试题
1.表中某一字段是自动增长型,但现在出现了相同的数据(如何出现的在此不讨论),要怎样找出其中相同的记录,用最少三种方法写出SQL语句。 2.死锁是如何产生,怎样避免?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
babu2
2007-05-17
打赏
举报
回复
首先根据微软白皮书中的说明,数据库操作的死锁是不可避免的!只能尽量避免。
所有的死锁最深层的原因就是一个:资源竞争
表现一:
一个用户A 访问表A(锁住了表A),然后又访问表B
另一个用户B 访问表B(锁住了表B),然后企图访问表A
这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了
同样用户B要等用户A释放表A才能继续这就死锁了
解决方法:
这种死锁是由于你的程序的BUG产生的,除了调整你的程序的逻辑别无他法
仔细分析你程序的逻辑,
1:尽量避免同时锁定两个资源
2: 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源.
表现二:
用户A读一条纪录,然后修改该条纪录
这是用户B修改该条纪录
这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占锁由于A有共享锁存在所以必须等A释
放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。
这种死锁比较隐蔽,但其实在稍大点的项目中经常发生。
解决方法:
让用户A的事务(即先读后写类型的操作),在select 时就是用Update lock
语法如下:
select * from table1 with(updlock) where ....
babu2
2007-05-17
打赏
举报
回复
1. dawugui 写的 having count(*) > 1 的子查询方法
2. kaper 写的 游标查询方法
3. chrisky2006 写的表自联合查询方法
也就这几种方式了~~ 有些语句有变动 但 查询方方法并没有变化!
DengXingJie
2007-05-17
打赏
举报
回复
还有没有其它的写法?
DengXingJie
2007-05-17
打赏
举报
回复
谢谢各位!
chrisky2006
2007-05-17
打赏
举报
回复
Select id
From table
Where id exist in
(Select a.id
From table as a
Where table.id = a.id
)
kaper
2007-05-16
打赏
举报
回复
还有种火星级写法:
游标
if not exists(select id from #tmp)
insert into #tmp
....
lzhcxc
2007-05-16
打赏
举报
回复
select * from T as tmp
where (select count(*) from T where ID=tmp.ID)>1
lzhcxc
2007-05-16
打赏
举报
回复
1、
select ID from T group by ID having count(*)>1
dawugui
2007-05-16
打赏
举报
回复
1.表中某一字段是自动增长型,但现在出现了相同的数据(如何出现的在此不讨论),要怎样找出其中相同的记录,用最少三种方法写出SQL语句。
假设某一字段是ID
select * from tb where id in (select id from tb group by id having count(*) > 1)
12道必须掌握的数据库
面试题
(
sql
server 2008)
这是一份有点难度的数据库
面试题
,会这12道,面试数据库题目基本没问题
最全的IT公司
面试题
集 CHM版的
搜集了超级多的
面试题
,做成了CHM版,希望对准备面试的朋友有所帮助,主要的分类如下: Java
面试题
,J2EE
面试题
,.net
面试题
,PHP
面试题
,数据库
面试题
,英语面试,外企面试,软件测试
面试题
,Python
面试题
,Oracle
面试题
,My
Sql
面试题
,Web开发
面试题
,Unix
面试题
,程序员面试,网络技术
面试题
,网络安全
面试题
,Linux
面试题
,Hibernate
面试题
,Spring
面试题
,
SQL
Server
面试题
,Struts
面试题
,EJB
面试题
本文件已经收集了 http://www.mianwww.com 至 2009年10月27日的所有内容。 有人可能下载后打不开:提示The address is not valid 解决方法: 1. 右键点击下载后的文件,点Properties 属性 2. 点击Unblock 3. 双击重新打开下载的文件
2015Java开发软件工程师
面试题
(必备最全)
绝对的史上目前为止最全的Java工作人员
面试题
集,Java
面试题
,oracle,ms
sql
数据库
面试题
,linux
面试题
,web服务器
面试题
面试经验+基础总结
(阿里、百度、蘑菇街的面试总结)+平时的面试资料整理+我的简历,是自己平时的总结,带有主观性呢,大家可以随便看看。
面试
SQL
整理 常见的
SQL
面试题
:经典50题
目录
SQL
基础知识整理: 常见的
SQL
面试题
:经典50题 三、50道
面试题
2.汇总统计分组分析 3.复杂查询
sql
面试题
:topN问题 4.多表查询 【
面试题
类型总结】这类题目属于行列如何互换,解题思路如下: 其他
面试题
:
SQL
基础知识整理: select 查询结果 如:[学号,平均成绩:组函数avg(成绩)]from 从哪张表中查找数...
MS-SQL Server
34,876
社区成员
254,640
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章