密钥1的SQL重复条目

时间:2013-09-04 07:53:40

标签: mysql sql

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

我已经获得了一段代码来运行以重置这些统计信息,但是当我尝试运行它时,它会丢弃'重复条目'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)。任何帮助赞赏,欢呼!

2 个答案:

答案 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