最佳实践MySQL UPDATE / INSERT

时间:2012-02-27 17:44:49

标签: mysql sql sql-update sql-view join

免责声明:我没有设计这些表格,并且我知道它们不是存储这些数据的最佳方式。我需要有关处理这种情况的最佳方法的建议。

我有两个MySQL表:

`students`
id        int; primary, unique
prof1_id  varchar 
prof2_id  varchar 
prof3_id  varchar 

`professors`
id         int; primary, unique, auto-increment
username   varchar
fname      varchar
fname      varchar
students_id int
comment    text

教授的用户名可能位于students表的最后三列中的任何一列。教授需要为每个在students表中排成一行的学生提供一条评论。

作为此数据库前端的应用程序需要professors表中的另外两列:student_id和comment。由于每个学生可能在他们的行中有任何3位教授,因此只要为多名学生列出新行,就需要将新行添加到professors。这意味着professors id字段需要为每个新学生评论自动递增。

使用MySQL查询完成此数据传输的最佳方法是什么?我已经尝试将UPDATE与JOIN结合使用,但我不确定是否有一种有效的方法可以做到这一点。另外,我是否需要为professors创建另一个主键,因为多行具有相同的ID?

我怀疑VIEW可能是实现此目的的最佳方式,但前端的应用程序希望将信息存储在professors表中。

我正在考虑的另一件事是我可以通过加入两个表创建一个新表,并有一个两列主键,students.id,professor.id。

谢谢!

1 个答案:

答案 0 :(得分:0)

  

此外,我是否需要为教授创建另一个主键   多行将具有相同的ID?

是。这是个好主意。

我编写了简单的查询,将第一个表中的数据合并为2列。这不是完整的答案,但它可以帮助你很多:

SELECT id, prof1id as profid
UNION
SELECT id, prof2id
UNION
SELECT id, prof3id
UNION;

你可以使用它来查看,插入,但我不熟悉specyfic MySQL语法,我不想误导你。如果有效,请提供反馈。

" UNION"删除重复的行,您可能需要使用" UNION ALL"保持重复(如2或3位教授专栏中的重复值)。