• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

面试之sql,大家进来看看如何做

mysql 搞代码 7年前 (2018-06-05) 143次浏览 已收录 0个评论

面试之sql,大家进来看看怎么做?
凭证明细表字段(主键为:日期、凭证字、凭证号、序号)如下:
日期 | 凭证字 | 凭证号 | 序号 | 借贷方向 | 发生金额 |
2006-9-13 | 转 | 1 | 1 | 借 | 100 |
2006-9-13 | 转 | 1 | 2 | 借 | 100 |
2006-9-13 | 转 | 1 | 3 | 贷 | 200 |
2006-9-14 | 付 | 1 | 1 | 借 | 300 |
2006-9-14 | 付 | 1 | 2 | 贷 | 300 |

凭证表字段(主键为:日期、凭证字、凭证号)如下:
日期 |凭证字|凭证号|借金额|贷金额|
2006-9-13 |转 | 1 | ? | ? |
2006-9-14 |付 | 1 | ? | ? |

另外,也可以看到,凭证明细表的(日期、凭证字、凭证号)是凭证表的外键。
现在需要使用SQL的UPDATE方法,来更新凭证表的【借金额】和【贷金额】值。
其值等于对就明细表的所有同借贷方向的记录的发生金额的合计。

比如上表明细,更新完的结果如下;
日期 |凭证字|凭证号|借金额|贷金额|
2006-9-13 |转 | 1 | 200 | 200 |
2006-9-14 |付 | 1 | 200 | 300 |
请写出SQL语句

以上是我在面试中遇到真实试题,大家出出主意吧!!

——解决方案——————–
好像是这样,用中文做表名字段名真爽啊:

SQL code

 mysql> select * from `凭证表`; +-----------+--------+--------+--------+--------+ | 日期 | 凭证字 | 凭证号 | 借金额 | 贷金额 | +-----------+--------+--------+--------+--------+ | 2006-9-13 | 转 | 1 | ? | ? | | 2006-9-14 | 付 | 1 | ? | ? | +-----------+--------+--------+--------+--------+ 2 rows in set (0.00 sec) mysql> select * from `凭证明细表`; +------------+--------+--------+------+----------+----------+ | 日期 日期 | 凭证字 | 凭证号 | 序号 | 借贷方向 | 发生金额 | +------------+--------+--------+------+----------+----------+ | 2006-9-13 | 转 | 1 | 1 | 借 | 100 | | 2006-9-13 | 转 | 1 | 2 | 借 | 100 | | 2006-9-13 | 转 | 1 | 3 | 贷 | 200 | | 2006-9-14 | 付 | 1 | 1 | 借 | 300 | | 2006-9-14 | 付 | 1 | 2 | 贷 | 300 | +------------+--------+--------+------+----------+----------+ 5 rows in set (0.00 sec) mysql> update `凭证表` as a -> set `借金额` = (select sum(`发生金额`) from `凭证明细表` as b where a.`日 期` = b.`日期` and `借贷方向` = '借'), -> `贷金额` = (select sum(`发生金额`) from `凭证明细表` as b where a.`日 期` = b.`日期` and `借贷方向` = '贷'); Query OK, 2 rows affected (0.03 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> select * from `凭证表`; +-----------+--------+--------+--------+--------+ ; | 日期 | 凭证字 | 凭证号 | 借金额 | 贷金额 | +-----------+--------+--------+--------+--------+ | 2006-9-13 | 转 | 1 | 200 | 200 | | 2006-9-14 | 付 | 1 | 300 | 300 | +-----------+--------+--------+--------+--------+ 2 rows in set (0.00 sec)

欢迎大家阅读《面试之sql,大家进来看看如何做》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:面试之sql,大家进来看看如何做
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址