求一SQL语句,来者有分!

migichen 2003-12-15 07:03:46
字段1 字段2 字段3 字段4
1 D AXB YES
2 D X NO
3 G AHB YES
4 G H NO
表如上

现在是需要将所有字段4为YES的和字段2与它相同的字段4为NO的记录交换字段3的值
将表变为
字段1 字段2 字段3 字段4
1 D X YES
2 D AXB NO
3 G H YES
4 G AHB NO
(记录1 和2 交换字段3 ;记录3 和4 交换字段3)
这个UPDATE SQL怎么写啊

...全文
56 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinlin 2003-12-29
  • 打赏
  • 举报
回复
先生成一个结构.内容相同的表如:mmm
然后:
update 表2 INNER JOIN mmm ON [表2].[字段2]=mmm.字段2 and [表2].[字段1] <> mmm.字段1 set [表2].[字段3]=mmm.字段3
migichen 2003-12-25
  • 打赏
  • 举报
回复
huang59(今晚又没睡):工程开工时太仓促,且我是第一次做,我也想到了,但是只能挽救--因为人家已经开始用了
有更好的思路杜绝同公司商品编号不统一的问题吗(主要是人为造成的)
(一个汽车销售公司,每一辆车的发动机号长度不同、没有规律,但绝对没有同编号的两台车,每一个店都能进货,除了公司发通知,请教有更好的办法吗?)
anytimer 2003-12-25
  • 打赏
  • 举报
回复
不懂,学习
huang59 2003-12-24
  • 打赏
  • 举报
回复
数据库的原始设计思路有问题,哪里有这样做的,不出问题才怪
donghb8 2003-12-24
  • 打赏
  • 举报
回复
你用布尔类型的话
update tablename set 字段4='0' where 字段4='no' and 字段2=字段2
update tablename set 字段4=‘no' where 字段4='yes' and 字段2=字段2
update tablename set 字段4='yes' where 字段4='0' and 字段2=字段2
rainedviolet 2003-12-24
  • 打赏
  • 举报
回复
SELECT * FROM tabname1 INTO temp tabname2;
这样就生成了一个tabname2与tabname1同结构、同内容的表。
然后进行UPDATE修改。
migichen 2003-12-24
  • 打赏
  • 举报
回复
victorycyz:我用的一个商品库(表)
rainedviolet(霞儿):是一个可行的办法,但是我没有那个数据库的FTP权限,只有通过ASP的方法建立表,然后。。。

是不是真不能用SQL语句解决吗
migichen 2003-12-20
  • 打赏
  • 举报
回复
原因:

字段1(记录编号) 字段2(商品条码) 字段3 (内部编号标准) 字段4(是否售出)

一个公司有两个销售点,A点进了一批货(入了库)然后调到B点,B点又入了一次库
A点的编号标准如(****001****,****002****)
B点的编号标准如(001,002)
B点销售时用的编号如(****001****,002,****003****,004,005等)没有固定用哪个标准

目的:

清理数据库,去掉B点入库记录

思路:
将所有已经卖出的,是B点编号标准的商品,与同商品条码的A点编号标准,对调编号

不知道我说清楚没有,期待大虾指点。。
rainedviolet 2003-12-20
  • 打赏
  • 举报
回复
假设tabname1为现有表明,建立表tabname2与tabname1结构相同,把tabname1的内容导到tabname2中,保证tabname1和tabname2结构和内容均相同。
UPDATE tabname1
set 字段3 = (select 字段3 from tabname2
where tabname2.字段2 = tabname1.字段2
and tabname2.字段4 = 'NO')
where 字段4 = 'YES';
UPDATE tabname1
set 字段3 = (select 字段3 from tabname2
where tabname2.字段2 = tabname1.字段2
and tabname2.字段4 = 'YES')
where 字段4 = 'NO';
这样应该能够得到正确的结果。


victorycyz 2003-12-20
  • 打赏
  • 举报
回复
反正我是没看明白。

对于你所说的A点的商品调到B点的问题,如果你的A、B点是两个分开的库的话,应该是这样的:
A点进货: A仓库入库
调到B点: A仓库出库
B仓库入库

这样,就不存在B点清除入库记录的问题了。
Lmovie 2003-12-17
  • 打赏
  • 举报
回复
可以通过建立临时表来实现
(victorycyz(中海,学SQL Server的菜鸟) 的方法虽然改了字段4,可字段1也跟着变了,与题设不完全符合!)
cheny1234 2003-12-17
  • 打赏
  • 举报
回复
如果可以,改字段1不更方便?
victorycyz 2003-12-16
  • 打赏
  • 举报
回复
update tablename set 字段4='y' where 字段4='no'
update tablename set 字段4=‘no' where 字段4='yes'
update tablename set 字段4='yes' where 字段4='y'

ps: 你这样做有什么目的?很容易因为多执行了一次update而把你要的结果搞反的。

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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