sql难题

newqq 2011-01-27 11:41:47
A表里面的部门代码是这样的 J01','X01','X03
B表里面的是这样的:
部门代码 部门名称
J01 部门1
X01 部门2
X03 部门3
现在要实现的是:
1.A表和B表通过部门代码关联
2.如何在J01','X01','X03中删除和增加一个部门代码,如删除后变成J01','X01,增加后变成J01','X01','X03','X04
请大家帮忙,谢谢!



...全文
260 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmzxsgs 2011-01-31
  • 打赏
  • 举报
回复
用left join 条件用部门代码 is null
幸运的意外 2011-01-28
  • 打赏
  • 举报
回复
直接删减还不行吗?
hugang709979940 2011-01-28
  • 打赏
  • 举报
回复
update a set aaaa=replace(aaaa,'X03','')
update a set aaaa=aaaa+',X04'''
这样即可
yyfhz 2011-01-28
  • 打赏
  • 举报
回复
删除好像有漏洞(想改J01有可能连J012也一块儿被改了),改一下看看:

Update A
Set 部门代码=
case 部门代码 When Null then Null
Else SubString(Replace(','''+部门代码+'''',',','''+你的部门代码+'''',''),2,
Len(Replace(','''+部门代码+'''',',','''+你的部门代码+'''',''))-2)
End
Where 你的记录条件
yyfhz 2011-01-28
  • 打赏
  • 举报
回复
试试看
增加:(在现有记录上改)

Update A
Set 部门代码=
case 部门代码
when null then 你的部门代码
else 部门代码+''','+你的部门代码
end
Where 你的记录条件


删除:(在现有记录上改)

Update A
Set 部门代码=
case
When 部门代码 = 你的部门代码 Then null
When 部门代码 like 你的部门代码+''',''%' then Replace(部门代码,你的部门代码+''',''','')
When 部门代码 like '%'','''+你的部门代码 then Replace(部门代码,''','''+你的部门代码,'')
When 部门代码 like '%'','''+你的部门代码+''',''%' then Replace(部门代码,','''+你的部门代码+'''','')
Else 部门代码
End
Where 你的记录条件


关联:

Select * From A
inner Join B on
','''+A.部门代码+''',' like '%,'''+B.部门代码+''',%'

newqq 2011-01-27
  • 打赏
  • 举报
回复
呵呵,图片很性感
王向飞 2011-01-27
  • 打赏
  • 举报
回复
UPDATE a SET a.cdepcode=stuff(cdepcode,1,1,'')
where LEFT(cdepcode,1)=''''

你可以加条件啊,没说让你全更新。。。
newqq 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wxf163 的回复:]
SQL code
UPDATE a SET a.cdepcode=replace(cdepcode,',''X03','')
UPDATE a SET a.cdepcode=stuff(cdepcode,1,1,'')
[/Quote]
执行之后变成:01','X01'
王向飞 2011-01-27
  • 打赏
  • 举报
回复
UPDATE a SET a.cdepcode=replace(cdepcode,',''X03','')
UPDATE a SET a.cdepcode=stuff(cdepcode,1,1,'')
newqq 2011-01-27
  • 打赏
  • 举报
回复
都吃饭去了吧
newqq 2011-01-27
  • 打赏
  • 举报
回复
删除的时候我不能判断是第一个还是中间的,所以有没有更好的办法
newqq 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jiao3630 的回复:]
SQL code


UPDATE a SET a.cdepcode=replace(cdepcode,',''X03','')
[/Quote]
谢谢,执行完之后是这样
J01','X01'
多了个',我想要J01','X01
另外,如果我要删除的是第一个该怎么写
jiao3630 2011-01-27
  • 打赏
  • 举报
回复


UPDATE a SET a.cdepcode=replace(cdepcode,',''X03','')
newqq 2011-01-27
  • 打赏
  • 举报
回复
增加的代码是这样:
UPDATE a SET a.cdepcode=cdepcode+''',''X04'
现在就是不知道如何关联和删除
GoAwayZ 2011-01-27
  • 打赏
  • 举报
回复
给点数据吧。
jiao3630 2011-01-27
  • 打赏
  • 举报
回复
么看懂
newqq 2011-01-27
  • 打赏
  • 举报
回复
补充2:
删除后变成J01','X01 增加后变成J01','X01','X03','X04
newqq 2011-01-27
  • 打赏
  • 举报
回复
补充下,关联的时候a.部门编码=b.部门编码这样是关联不到的
newqq 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wwwwgou 的回复:]
SQL code
CREATE TABLE A
(
部门代码 VARCHAR(500)
)
INSERT A
SELECT 'J01'',''X01'',''X03'

CREATE TABLE B
(
部门代码 VARCHAR(100),
部门名称 NVARCHAR(100)
)
INSERT B
SELECT 'J01', N'部门1' UN……
[/Quote]

如果删除的是第一个,就会出问题
newqq 2011-01-27
  • 打赏
  • 举报
回复
首先要根据A表列出部门名称,所以,要求两个表关联
加载更多回复(5)

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧