我最近不得不接管记录某些统计数据的数据库(在学校内)的管理,在每年年初,这些统计数据应该被重置。
我已经获得了一段代码来运行以重置这些统计信息,但是当我尝试运行它时,它会丢弃'重复条目'10172-0'以解决密钥1 错误。 ('10172-0'部分也发生在其他各种数字/ student_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)。任何帮助赞赏,欢呼!
答案 0 :(得分:1)
你这样做
SELECT *
FROM
WHERE
在上面的查询中你错过了添加表名。
修改强>
SELECT *
FROM
roombookings.students
WHERE
答案 1 :(得分: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
表时会出错。
这是因为对于roombooking.students
表中的每个 student_id,您将尝试在cfc.student_stats
表中创建一个主键,该主键由学生ID和常数0
。
如果你不得到任何大于1的计数,那么很可能已经在cfc.student_stats
表中一行并且该学生ID