根据另一列的值更新列

时间:2012-03-16 07:35:41

标签: php mysql if-statement

我有一个名为 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());

3 个答案:

答案 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变量中找到你的成绩单。