MySQL中,UPDATE SET 中类似if-else的条件怎么办???????????????????????

neo325 2010-12-10 09:18:15
有以下3个table
Book(Book_no,Title,Subject,Author,Publisher,ISBN)
Customer(User_id,Name,Date_of_birth)
Loan(User_id,Book_no,Date_due,Date_ret,Fine,Paid)

题目要求:
set fines, for loans that are late and where no fine is currently set, by calculating the fine to be 20% of the elapsed time (if no return date, use the current date from the system)

我刚学MySQL,写了以下代码,我就知道肯定是错的....


UPDATE Loan
(SET Fine=(Date_ret-Date_due)*0.20
WHERE Fine is NULL AND Date_ret>Date_due)
AND
(SET Fine=(SYSDATE()-Date_due)*0.20
WHERE Fine is NULL AND Date_ret is NULL);


这种类似if-else的嵌套应该怎么写呢???
各位前辈教教我啊!!!!!!
...全文
4908 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiyi_heather 2012-12-09
  • 打赏
  • 举报
回复
我也在为这道题纠结,我晕,老师2年出题都不变的啊!!
neo325 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 myxiao7 的回复:]

从你发帖这一刻起,acmain就已经是你的最好老师了
[/Quote]

哎~前辈们教训的是~~
正如您说的(N次的SB提问才能成为NB)啊~呵呵~~
我刚接触SQL两天,大家多多包涵啊~~~
macrotea-cn 2010-12-13
  • 打赏
  • 举报
回复
从你发帖这一刻起,acmain就已经是你的最好老师了
neo325 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zuoxingyu 的回复:]

楼主的学习方式不对。
版主给出了语句,你不懂,老师没教,不会自己翻手册看啊?

你只会A,B,C,要你打出GOOD,怎么样也不行,如果你再把G,O,D学会了,那么GOOD很容易就出来了。

你这样的问问题的方式让我很无语。
[/Quote]
感谢你指出我的不足!我会努力的~
但是针对这个事情我解释一下啊,因为老师确实只教了那些指令,让我们做这个作业,想必应该是这些指令能够实现的。所以我希望找到运用老师教的指令完成作业,并不是没学过的指令就不想去学习哦~
zuoxingyu 2010-12-13
  • 打赏
  • 举报
回复
楼主的学习方式不对。
版主给出了语句,你不懂,老师没教,不会自己翻手册看啊?

你只会A,B,C,要你打出GOOD,怎么样也不行,如果你再把G,O,D学会了,那么GOOD很容易就出来了。

你这样的问问题的方式让我很无语。
neo325 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 acmain_chm 的回复:]

如果只能用一语句来写的话,那没有能让你看懂的了。
[/Quote]

UPDATE Loan
SET Fine=(Date_ret-Date_due)*0.20
WHERE Fine is NULL AND Date_ret is NOT NULL AND Date_ret>Date_due;

UPDATE Loan
SET Fine=(SYSDATE()-Date_due)*0.20
WHERE Fine is NULL AND Date_ret is NULL AND SYSDATE()>Date_due;

前辈您看,直接写成这样行不行?
ACMAIN_CHM 2010-12-10
  • 打赏
  • 举报
回复
如果只能用一语句来写的话,那没有能让你看懂的了。
neo325 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acmain_chm 的回复:]

或者把你能看懂的函数都先列出来,否则我继续写你也是继续看懂,这样纯属浪费你我时间。
[/Quote]

CREATE DATABASE
STOP DATABASE
DROP DATABASE
SHOW DATABASE

CREATE TABLE

ALTER TABLE
ADD

DROP TABLE

INSERT INTO
VALUES

SELECT
FROM

DISTINCT
WHERE

LIKE
DETWEEN
IS NULL
IS NOT NULL
IN
AND
OR
SYSDATE

MAX
MIN
AVG
SUM
COUNT

ORDER BY
DESC

GROUP BY
HAVING

UPDATE
SET

DELETE FROM

基本就是这些了,非常的有限。如果有超出范围的,也不要太难。
请前辈指点啊。拜托了!
neo325 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acmain_chm 的回复:]

或者把你能看懂的函数都先列出来,否则我继续写你也是继续看懂,这样纯属浪费你我时间。
[/Quote]

好的,您是好人啊!
您等一下啊~
ACMAIN_CHM 2010-12-10
  • 打赏
  • 举报
回复
或者把你能看懂的函数都先列出来,否则我继续写你也是继续看懂,这样纯属浪费你我时间。
ACMAIN_CHM 2010-12-10
  • 打赏
  • 举报
回复
不用DATEDIFF和IFNULL,估计你更看不懂了。
neo325 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 acmain_chm 的回复:]

SQL code
update loan
set Fine=Datediff(IFNULL(Date_ret,SYSDATE()),Date_due)*0.2
where IFNULL(Date_ret,SYSDATE())>Date_due
And Fine Is null
[/Quote]
前辈。。这段命令好高级我看不太懂,我刚刚开始学,老师还没有教Datediff和IFNULL,
有没有简单点的形式解决这个问题啊?非常感谢!
ACMAIN_CHM 2010-12-10
  • 打赏
  • 举报
回复
update loan
set Fine=Datediff(IFNULL(Date_ret,SYSDATE()),Date_due)*0.2
where IFNULL(Date_ret,SYSDATE())>Date_due
And Fine Is null
neo325 2010-12-10
  • 打赏
  • 举报
回复
对会mySQL的人来说这问题应该很简单的吧.....在线等啊!!!!!
大家帮帮忙~~~~~~~

56,678

社区成员

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

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