mysql - 将列表插入到Mysql中的单个列中

标签 mysql

我有这样的东西:

  • 类(class):CID - CName
  • 学科:MID - MNamev - MProf

我必须创建一个学科列表,因为一门类(class)会有多个学科。所以我跟着这个link并创建了第三个表,就像这样:

CREATE TABLE coursedisciplines (
courseID int references curso (CID),
disciplineID int references materias (MID),
constraint pkcoursedis primary key (courseID, disciplineID)
)

我能够为第一个表(类(class))和第二个表(学科)添加数据。可悲的是,当尝试使用第三个连接它们时,我收到有关语法的错误。我查找了文档,但没有找到我要查找的内容。这是代码的一部分。

id = cmd.LastInsertedId;

try
{
    cmd.CommandText = "INSERT INTO materias(MName, MProf) VALUES (@MName, @MProf)";
    cmd.Parameters.AddWithValue("@MName", txtMName.Text);
    cmd.Parameters.AddWithValue("@MProf", txtMProf.Text);

    cmd.ExecuteNonQuery();

    //The error is below
    cmd.CommandText = "INSERT INTO coursedisciplines(courseID, disciplineID) VALUES(id, SELECT MID FROM discipline WHERE MName = '"+ txtMName.Text +"')"; 
    cmd.ExecuteNonQuery();
}

你们知道哪里出了问题吗?这种方法真的不好吗?我阅读了一些关于序列化的内容,但不想这样做。

编辑 它在这里起作用。必须使用选择插入而不是选择值。谢谢!

最佳答案

我不知道这是不是整个问题,但是在

INSERT INTO coursedisciplines(courseID,disciplineID) 
VALUES(id, SELECT MID FROM discipline WHERE MName = '"+ txtMName.Text +"')

mysql 将尝试从 courcedisciplines 表中不存在的字段 'id' 中插入值。您需要从前一个插入中获取 id 并在此查询中重用它。此外,子查询需要在括号中:(SELECT MID ... +"')(这可能是导致语法错误的原因)

关于mysql - 将列表插入到Mysql中的单个列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107271/

相关文章:

MySQL:在没有 JOIN 或 UNION 的情况下合并两个不同的表

php - 显示 PHP Mysql 数组的内容

java - 对应 MySQL 数据类型为 Java Date()

MySQL:基于 DELETE 和 INSERT 增加列值的触发器

mysql从另一个表更新一列

php - WordPress 自定义查询

php - 执行包含另一个位置的另一个 PHP 脚本的路径的 PHP 脚本

mysql - 为什么我的 MySQL 查询在我这样做时很快,而在我这样做时却很慢?

mysql查询和正则表达式问题

mysql - 如何统计 OAuth2 验证的 API 调用