在论坛中出现的比较难的sql问题:10(删除多表中的同一个外键)
来源:互联网 发布:春秋航空 知乎 编辑:程序博客网 时间:2024/06/13 23:49
最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。
所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
http://bbs.csdn.net/topics/390633551
最近在做一个OA系统,用SQLServer2008数据库。系统里有个删除员工的功能,但是考虑到其他表中有员工表的外键,删除时应该将其他表中相关的记录全部删除,请问如何写语句?
比如员工表是OA_User,员工编号Uid,数据库中最少有10张表里有Uid外键,请问如何删除其他表中的相关记录?
create table OA_User(Uid int primary key ,uname varchar(20))create table OA_tb(id int identity(1,1)primary key ,Uid int foreign key references OA_User(Uid) on delete cascade --级联删除)insert into OA_Uservalues(1,'张三'), (2,'李四') insert into OA_tbvalues(1),(1),(1),(2),(1) --删除主表中udi 为2的记录,没有报错delete from oa_user where uid = 2--附表中的uid为2的记录,自动删除select * from oa_tb /*idUid11213151*/也可以通过图形化操作来实现:
2、统一改换查询出的字段。。这是不是想多了?
http://bbs.csdn.net/topics/390610092
能不能这样
select A.* as A_*
from QAQuestion Q
inner join QAAnswer A ON A.QuestionID = Q.ID
简单地说,不想一个个地去给每个字段as别名
我如上去写只是打个比方。。实际运行不了的,想得到的查询结果是
A_字段1,A_字段2,A_字段3,A_字段4
有没有办法呢?
我的回复:
本质上来说,只有在sql server端,能把select a.* as a_*,也就是自动进行转换,才能支持。
因为在sql server端,你写的sql语句是各式各样的,要想实现你的A.* as A_*,实际上就是要改写查询,改为:
select a.字段1 as a_字段1,
a.字段2 as a_字段2,
a.字段3 as a_字段3,
from a
下面是通过动态语句来实现的:
--先建个表select * into wc_tablefrom sys.objects/*要实现select a.* as a_*from wc_table的效果*/--动态生成语句为:declare @sql varchar(max);set @sql = '';select @sql = @sql + ',' + c.name + ' as A_' + c.name from sys.tables tinner join sys.columns c on t.object_id = c.object_idwhere t.name = 'wc_table'order by c.column_idset @sql = 'select ' + STUFF(@sql,1,1,'') + ' from wc_table A'select @sql /*我把结果格式化了一下就是这样:SELECT name AS A_name, object_id AS A_object_id, principal_id AS A_principal_id, schema_id AS A_schema_id, parent_object_id AS A_parent_object_id, type AS A_type, type_desc AS A_type_desc, create_date AS A_create_date, modify_date AS A_modify_date, is_ms_shipped AS A_is_ms_shipped, is_published AS A_is_published, is_schema_published AS A_is_schema_published FROM wc_table A */exec(@sql)
- 在论坛中出现的比较难的sql问题:10(删除多表中的同一个外键)
- 在论坛中出现的比较难的sql问题:16(取一个字段中的数字)
- 在论坛中出现的比较难的sql问题:15(生成动态删除列语句 分组内多行转为多列)
- 在论坛中出现的比较难的sql问题:8(递归问题 树形结构分组)
- 在论坛中出现的比较难的sql问题:12(递归问题2 拆分字符串)
- 在论坛中出现的比较难的sql问题:23(随机填充问题)
- 在论坛中出现的比较难的sql问题:30(row_number函数 物料组合问题)
- 在论坛中出现的比较难的sql问题:33(递归 连续日期问题 )
- 在论坛中出现的比较难的sql问题:34(递归 获取连续值问题)
- 在论坛中出现的比较难的sql问题:35(时间间隔计算问题)
- 在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题)
- 在论坛中出现的比较难的sql问题:2(row_number函数+子查询)
- 在论坛中出现的比较难的sql问题:3(row_number函数 分组查询)
- 在论坛中出现的比较难的sql问题:17(字符分拆2)
- 在论坛中出现的比较难的sql问题:20(触发器专题2)
- 在论坛中出现的比较难的sql问题:22(触发器专题3)
- 在论坛中出现的比较难的sql问题:24(生成时间段)
- 在论坛中出现的比较难的sql问题:25(字符串拆分3)
- Android2.3系统的overscroll效果
- cocos2d-x 屏幕分辨率自动匹配
- QT中添加MFC库,QT中添加windows函数库
- swift mul node install
- linux驱动中的write函数
- 在论坛中出现的比较难的sql问题:10(删除多表中的同一个外键)
- 一点安卓开发的经验
- CDH4.4 tarball hbase 配置錯誤 FATAL org.apache.hadoop.hbase.master.HMaster: Unhandled exception.
- Linux下批量Kill多个进程
- Invalid Address specified to RtlValidateHeap
- cocos2D中scheduleOnce的陷阱
- struts2中,在request/session/application中访问或添加属性
- 跨线程访问window控件
- 使用Cocos2d-x中的CCMenuItemToggle制作商店