0

我最近不得不接管记录某些统计数据的数据库(在学校内)的管理,在每年年初这些统计数据应该被重置。

我已经获得了一段代码来运行以重置这些统计信息,但是当我尝试运行它时,它会为键 1 错误抛出“重复条目 '10172-0” 。(“10172-0”部分也发生在其他各种号码/学生 ID 上)。我得到的代码是:

Insert into cfc.student_stats (students_id, no_cfcs)
Select student_id, 0
from roombookings.students
where student_id >= 1
and student_id <= 15635

我已经检查过,当我检查各种 student_id 时没有重复的条目,所以我不知道该怎么做。在错误消息下方,我得到一个“浏览”按钮,然后告诉我以下信息:

Error

SQL query: Documentation

SELECT *
FROM
WHERE CONCAT_WS( "-", students_id, no_cfcs ) = "10172-0"
ORDER BY students_id, no_cfcs

MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE CONCAT_WS("-", students_id,  no_cfcs)
                    = "10172-0"' at line 3 

我在这里浏览了许多其他类似的问题,但似乎没有一个与我得到的匹配(但我不太了解 SQL)。任何帮助表示赞赏,干杯!

4

2 回答 2

1

你正在这样做

SELECT *
FROM
WHERE

在上面的查询中,您错过了添加表名。

编辑

SELECT *
FROM
   roombookings.students
WHERE
于 2013-09-04T07:57:11.487 回答
0

关于第二个错误,我不确定您为什么不只使用:

WHERE students_id = 10172 AND no_cfcs = 0

将它们变成字符串只是为了比较它们似乎有点愚蠢和低效。

此外,您似乎还没有选择要从中读取的实际表,所以这样的事情会更好:

SELECT    *
FROM      cfc.student_stats
WHERE     students_id = 10172
AND       no_cfcs = 0

students_id, no_cfcs当您只允许每种可能性时,也没有必要进行排序,因此我删除了该位。


关于您的第一个错误,我怀疑这可能是因为表中的条目重复roombookings.students。如果你这样做:

select student_id, count(*)
from roombooking.students
where student_id >= 1 and student_id <= 15635
group by student_id

并且第二列中有任何大于 1 的数字,尝试将重复项插入cfc.student_stats表中时会出错。

这是因为对于该表中的每个student_id roombooking.students,您将尝试在cfc.student_stats表中创建一个主键,该主键由学生 ID 和常量组成0

如果您没有得到任何大于 1 的计数,则很可能表中已经cfc.student_stats存在具有该学生 ID的行。

于 2013-09-04T07:57:37.363 回答