Sqlite中的REFERENCES关键词

0 投票
2 回答
1784 浏览
提问于 2025-04-16 23:18

有没有人知道在sqlite中,REFERENCES这个关键词是干什么用的?比如我有这样一句话:fr int REFERENCES contacts(id),这是什么意思?如果我想用SELECT count(fr) from TABLE WHERE来查找某个联系人的id,我该怎么做呢?

换句话说,我想写一个SELECT语句,来统计有多少个fr的值是某个特定的联系人id。

2 个回答

1

这段话的意思是,它创建了一个外键,这个外键指向了contacts表中的id字段。不过我不太记得这样的写法是否可以在字段后面使用。你可以这样做,比如:

CREATE TABLE foo (
    id int,
    fr int,
    FOREIGN KEY(fr) REFERENCES bar(id)
);
2

为了回答问题的另一部分,你可以这样做:

select count(*) from tablename where fr = contactid;

这里的“references”表示fr字段包含了来自contacts表中id字段的值。

再多说点细节:你有两个表,一个是contacts,另一个是“tablename”。在contacts表里,你有各种人的详细信息,每个人都有一个id。而在“tablename”里,你有一些额外的信息,每一行都是关于contacts表中某个人的。所以“tablename”中的每一行都有一个fr字段,用来标识这个人。这个fr字段里存的是那个人的id值(可以推测每个人的id都是不同的)。这就是“references”告诉你的意思——fr字段里存的是id的一个副本。

所以你想要做的就是找出“tablename”中每个人的记录数量。通常这意味着要把两个表连接起来,但在这个情况下你不需要,因为“tablename”中已经有了那个人的id的本地副本。所以你只需要找到“tablename”中fr字段等于那个人id的行,并对它们进行计数。这意味着你只需要找到那些fr等于id的行(因为你知道fr是来自contacts表的id的副本)。

撰写回答