我在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
但没有得到很好的解释。我如何使这项工作?
答案 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