如何在不启动新行的情况下在新的mysql db列中插入值?

时间:2014-07-17 20:17:31

标签: php mysql sql join

我在mysql数据库中有两个表:Table Cars和Table Comments。表格车辆具有自动递增的列ID和名称。对于表格汽车中的每个名称,我希望在表格注释中有一列,并在用户发布时发布评论。如何在不创建新行的情况下在空列中插入新值。 基本上发生的事情就是说我有这个数据库

X _ _ 
X _ _
X _ _

而不是张贴

X _ X 
X _ _
X _ _

它正在

插入新值
X _ _ 
X _ _
X _ _
_ _ X

然后是

的下一个
    X _ _ 
    X _ _
    X _ _
    _ _ X
    _ X _

我查看了join函数,但似乎只连接了两列,而不是一列。我也见过

SELECT @row := @row + 1 as row, t.*
FROM some_table t, (SELECT @row := 0) r

但没有得到很好的解释。我如何使这项工作?

2 个答案:

答案 0 :(得分:5)

如上所述,您的架构没有任何意义。如果您希望每个Comment有多个Car,请在Comment上添加一个外键,以引用它所谈论的Car

Car (Id, Name)
Comment (Id, CarId, CommentText)

然后,每当Comment进来时,

INSERT INTO Comment (CarId, CommentText) VALUES (@CarId, @CommentText)

答案 1 :(得分:1)

您需要的是找到您选择的行,然后执行update,而不是执行insert

您也可以使用trigger来实现此目的。如果这是您想要做的事情,请告诉我,我会扩展我的帖子。

此页面会告诉您UPDATE是什么:http://dev.mysql.com/doc/refman/5.0/en/update.html

如果该行存在,则执行更新,否则执行插入操作。这是一个示例代码。您必须根据表名自定义它:

INSERT INTO CarComment (col1, col2)
VALUES ("value1","value2")
ON DUPLICATE KEY UPDATE 
  value1=VALUES(something)

VALUES()的解释是:http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html#function_values