请教一个mysql 的sql 语句写法

yhspring 2008-06-27 10:54:08
我有两个表 A 和 B, A 包含字段 Aid 和 sum, B 包含字段 Bid, x1 和 x2, Bid 是 B 表中唯一的,不过A 表中的Aid则不是唯一的,并且Aid 与 Bid 是多对一的关系,现在我想实现以下的功能:

将 A.C > (B.x1 - B.x2) 的所有A.c 都更新为 (B.x1 - B.x2), 请问sql 语句的写法
...全文
53 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhspring 2008-06-27
  • 打赏
  • 举报
回复
多谢,我先试试
wwwwb 2008-06-27
  • 打赏
  • 举报
回复
update 后可以接两个表名吗
可以,内连接
update a,b set ... where ...
懒得去死 2008-06-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yhspring 的回复:]
感觉这条if 语句象C里的 (a > b) ? a : b,是这样的吗
[/Quote]

Yeah.
yhspring 2008-06-27
  • 打赏
  • 举报
回复
to yueliangdao0608: update 后可以接两个表名吗
wwwwb 2008-06-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yhspring 的回复:]
感觉这条if 语句象C里的 (a > b) ? a : b,是这样的吗
[/Quote]
yes
if(a>b,a,b)
wwwwb 2008-06-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yhspring 的回复:]
多谢wwwwb,原来sql语句里还能用if 这样的逻辑操作呀,应该是没问题的,我想更进问一下条件加强的情况,加强条件如下:
B.x1 > 0 and B.x2 > 0 and B.x1 > B.x2
[/Quote]

UPDATE A LEFT JOIN B ON a,AID=b.BID SET A.C=IF(A.C>(B.x1 - B.x2),(B.x1 - B.x2),A.C)
where B.x1 > 0 and B.x2 > 0 and B.x1 > B.x2
yhspring 2008-06-27
  • 打赏
  • 举报
回复
感觉这条if 语句象C里的 (a > b) ? a : b,是这样的吗
懒得去死 2008-06-27
  • 打赏
  • 举报
回复

update A,B set A.c = (B.x1 - B.x2) where A.Aid = B.bid and A.C > (B.x1 - B.x2)
yhspring 2008-06-27
  • 打赏
  • 举报
回复
多谢wwwwb,原来sql语句里还能用if 这样的逻辑操作呀,应该是没问题的,我想更进问一下条件加强的情况,加强条件如下:
B.x1 > 0 and B.x2 > 0 and B.x1 > B.x2
wwwwb 2008-06-27
  • 打赏
  • 举报
回复
UPDATE A LEFT JOIN B ON a,AID=b.BID SET A.C=IF(A.C>(B.x1 - B.x2),(B.x1 - B.x2),A.C)
yhspring 2008-06-27
  • 打赏
  • 举报
回复
sorry,A 包含 Aid 和 C
wwwwb 2008-06-27
  • 打赏
  • 举报
回复
没有看到你的记录,上述语句自行测试一下,看看结果是否正确
wwwwb 2008-06-27
  • 打赏
  • 举报
回复
TRY:
UPDATE A LEFT JOIN B ON AID=BID SET A.C=IF(A.C>(B.x1 - B.x2),(B.x1 - B.x2),A.C)

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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