sqlite:db-name,table-name,column-name可以是表达式吗?

时间:2015-07-13 21:47:37

标签: sqlite set

我想通过update-function填充sql-table并选择表达式中的列,如下所示:

update marks set (select name from students where id='1')='AAA'
where subject='math';

简单解释一下。 我想在触发器中使用一个表达式来使用SET运算符按值创建关系表值。

table students:
id name
 1 Max
 2 Joe
 3 Jim

table marks:
subject Max  Joe  Jim
math    AAA  B    C
sport   NULL NULL A

在我的例子中,一个phyton脚本逐行填充表'temps',传感器读数为'SensorID'和'Timestamp'。查找表'sensors'可以根据每个'SensorID'告诉'SensorName'。现在,触发器将自动填充数据透视表'T1Table',其时间戳为零秒substr(new.timestamp,1,17)||'00'

timestamp           T1   T2   T3
2015-01-01 12:35:00 23.5 22.3 NULL

源代码如下所示:

CREATE TRIGGER insert_T1 AFTER INSERT ON temps
BEGIN
INSERT OR IGNORE INTO T1Table(TimeStamp) VALUES(substr(new.timestamp,1,17)||'00');
UPDATE T1Table SET (select sensorName from sensors where sensors.sensorID=new.sensorID)=
ROUND(new.temperature,1)
WHERE TimeStamp=substr(new.timestamp,1,17)||'00';
END;

不幸的是它不能正常工作,这是错误信息

Error: near "(": syntax error

似乎SET运算符需要硬编码条目。 https://www.sqlite.org/lang_update.html

0 个答案:

没有答案