有谁知道REFERENCES关键字在sqlite中的作用?例如,如果我有以下声明:fr int REFERENCES contacts(id)
这意味着什么?如果我想SELECT count(fr) from TABLE WHERE
我知道联系人的ID,我该如何使用它?
换句话说,我想创建一个SELECT
语句,用于计算联系人ID等于某个数字的fr
的数量。
答案 0 :(得分:2)
回答问题的其他部分,你会这样做:
select count(*) from tablename where fr = contactid;
因为“引用”表示fr字段包含来自联系人中id字段的值。
一些额外的细节:你有两个表:contacts和“tablename”。在联系人中,你有各种各样的人的详细信息,我猜,每个人都有一个id。在“tablename”中,您有更多信息,表中的每一行都是“约”或“属于”联系人。所以“tablename”中的每一行都有一个标识该人的“fr”条目。它通过包含该人的id值的副本来做到这一点(可能每个人都有不同的id)。这就是“引用”告诉你的内容 - “fr”包含“id”的副本。
所以你想要做的是找到每个人“tablename”中的事物的数量。通常这意味着加入两个表,但在这种情况下你不必这样,因为在“tablename”中已经存在了该人的id的本地副本。所以你要做的就是在“tablename”中找到那些拥有该人ID的行,然后计算它们。这意味着你只需要找到“fr”等于id的那些行(因为你知道这是来自联系人的id的副本)。
答案 1 :(得分:1)
它创建一个指向id
表中contacts
字段的外键。我不记得它是否可以在这样的领域之后使用。你可以这样做。
CREATE TABLE foo (
id int,
fr int,
FOREIGN KEY(fr) REFERENCES bar(id)
);