0

这有效:

sqlite> .databases
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /path/to/db
2    uni              /path/to/db

还有这个:

sqlite> pragma main.table_info(tsv_storage);
0|id|int|0||0
1|seqid|text|0||0
...

还有这个:

sqlite> select count(*) from main.tsv_storage;
198159

并且附加的数据库也有效:

sqlite> select * from uni.fasta_storage where uni.fasta_storage.id = 1;
1 MASNTVSAQ...  Q197F8.1 002R_IIV3 Uncharacterized protein 002R  Q197F8  

但这不是:

sqlite> select main.tsv_storage.seqid where main.tsv_storage.id=8;
Error: no such column: main.tsv_storage.seqid

编辑:我也有这个问题,我必须加入表格吗?

insert into main.tsv_storage(seqlength) select length(fasta) from 
uni.fasta_storage where uni.fasta_storage.title = main.tsv_storage.seqid;
Error: no such column: main.tsv_storage.seqid

它发生在所有列上,不仅是 seqid。我想我做了这里解释的一切:http: //sqlite.awardspace.info/syntax/sqlitepg12.htm

我错过了什么?

4

2 回答 2

1
sqlite> select * from main.tsv_storage.seqid where main.tsv_storage.id=8;

您尚未定义在何处查找选择。您需要告诉查询要在表中搜索哪些字段,然后定义要搜索的表。该select *部分告诉查询查看表中的所有字段。from查询部分告诉进程要查找的表。最后部分where告诉查询在查找时要匹配什么。

于 2013-03-28T08:52:09.517 回答
0

使用时INSERT ... SELECT ...,该SELECT部分必须是有效查询。

如果没有子句main.tsv_storage中的表,您将无法访问列:FROM

INSERT INTO main.tsv_storage(seqlength)
SELECT length(fasta)
FROM uni.fasta_storage, main.tsv_storage
WHERE uni.fasta_storage.title = main.tsv_storage.seqid;

整个命令看起来很可疑。您确定不想更新seqlength列中现有记录的值吗?在这种情况下,你会使用这样的东西:

UPDATE main.tsv_storage
SET seqlength = (SELECT length(fasta)
                 FROM uni.fasta_storage
                 WHERE uni.fasta_storage.title = main.tsv_storage.seqid);
于 2013-03-28T09:27:22.087 回答