MySQL:将新列插入到具有其他表的默认值的表中

时间:2015-06-10 14:15:12

标签: mysql

我想在一个表中添加一个新列,其中包含来自其他表列的默认值。

abs(avgr1-avgr2)<1

我想在sensordata表中添加一个列,其默认值为sensorId相同的位置。

我该怎么做?

像这样的东西

SELECT ?p ?p1 ?genre (abs (AVG(?rating)-AVG(?ratingp1)) AS ?RDiff)
WHERE{
?p movies:hasRated ?rate.
?p1 foaf:knows ?p.
?rate movies:ratedMovie ?mov.
?rate movies:hasRating ?rating.
?mov movies:hasGenre ?genre.
?p1 movies:hasRated ?ratep1.
?ratep1 movies:ratedMovie ?movp1.
?ratep1 movies:hasRating ?ratingp1.
?movp1 movies:hasGenre ?genre.
FILTER (xsd:float(?Rdiff)<1.0 && ?p=movies:user1)
}
GROUP BY ?p ?p1 ?genre

请不要告诉我为什么我需要重复数据,这是有原因的:)

2 个答案:

答案 0 :(得分:2)

您需要分2步完成

<强>步骤1

update sensordata sd
join sensors s on s.sensorId = sd.sensorId
set sd.location = s.location

<强>步骤2

ALTER TABLE `sensordata` ADD `location` VARCHAR(200) NULL DEFAULT NULL AFTER `dataValues`;

UPDATE sensordata d SET  d.location = (SELECT s.location from sensors s WHERE s.sensorID = d.sensorID);

<强>更新 这就是我所做的,它工作正常

{{1}}

答案 1 :(得分:1)

Mysql几乎在所有情况下都要求默认值为常量 - https://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html。 您可以编写before insert触发器,以在某种程度上模拟DEFAULT功能。当然,触发器只会影响新行,您需要手动更新现有行。