我有一个名为 MAINTABLE 的表,列得分,成绩。我正在填写用户输入的得分,而成绩的内容取决于得分的值。那个
if score >= 70
then grade is 'A'
if score >= 60 AND <70
then grade is 'B'
if score >= 50 AND <60
then grade is 'C'
if score >= 45 AND <50
then grade is 'D'
if score >= 40 AND <45
then grade is 'E'
else grade is 'F'
请问如何为此类问题编写更新声明?
感谢您的帮助。我最欣赏它。 谢谢
更新: 这是我尝试的
$query = mysql_query(UPDATE maintable
SET grade = CASE
WHEN score >= 70 THEN 'A'
WHEN score >= 60 THEN 'B'
WHEN score >= 50 THEN 'C'
WHEN score >= 40 THEN 'D'
WHEN score >= 30 THEN 'E'
ELSE 'F'
END") or die (mysql_error());
答案 0 :(得分:0)
你可以通过在查询中使用case语句来实现这一点,这里是case语句的文档:
http://dev.mysql.com/doc/refman/5.0/en/case-statement.html
答案 1 :(得分:0)
好的,如果它仍然无法使用CASE,那么您可以尝试使用WHERE。
UPDATE maintable SET grade = 'A' WHERE score >= 70;
UPDATE maintable SET grade = 'B' WHERE score >= 60 AND score < 70;
......等等。 你也可以使用BETWEEN,我猜(我不使用mysql,不能在这里测试)。
答案 2 :(得分:0)
不要写更新语句,保持表格规范化 在选定的时间计算您的成绩单。这就是数据库的工作方式。
从表格中选择您的$得分,然后在PHP中
$grades = array('A' => 70, 'B' => 60, 'C' => 50, 'D' => 45, 'E' => 40, 'F' => 0);
foreach ($grades as $grade => $value) {
if ($score >= $value) {
break;
}
}
所以你会在$grade
变量中找到你的成绩单。