sql3查询,无法理解我做错了什么

sql3查询,无法理解我做错了什么,sql,Sql,我有一个数据库,其中有一个表,其中有3列。下面是.schema提供的内容: .schema 我正在尝试一个连接查询,以获取两个特定的docid并按术语匹配它们,如果没有意义,很抱歉,我是sql新手。我希望有一张格式如下的表格: docid1 |term |count docid2 |term |count 但我得到的结果是docid1 | term | count | docid2 | term | count的格式 我做错了什么 另外,尝试选择docid或任何其他列而不是执行select*会

我有一个数据库,其中有一个表,其中有3列。下面是.schema提供的内容: .schema

我正在尝试一个连接查询,以获取两个特定的docid并按术语匹配它们,如果没有意义,很抱歉,我是sql新手。我希望有一张格式如下的表格:

docid1 |term |count
docid2 |term |count
但我得到的结果是docid1 | term | count | docid2 | term | count的格式 我做错了什么

另外,尝试选择docid或任何其他列而不是执行select*会导致键不明确的错误。以下是我使用的查询:

 select* from (select docid, term, count from frequency where docid = '10080_txt_crude') as c join (select docid , term, count from frequency where docid = '17035_txt_earn') as d on c.term = d.term;
最后,在结尾处按docid添加组只给出一个答案。

尝试从。。。从一个表中选择所有列,而不是从所有联接表中选择所有列

select c.* from 
    (select docid, term, count from frequency where docid = '10080_txt_crude') as c 
join 
    (select docid , term, count from frequency where docid = '17035_txt_earn') as d 
on c.term = d.term;
或者,您可以进一步简化语法

select c.docid,c.term,c.ount 
from frequency c
join frequency d on c.term = d.term
where c.docid = '10080_txt_crude' and
    d.docid = '17035_txt_earn';
问题是,你到底在哪里使用D

您是否尝试从docid='10080_txt_rough'或docid='17035_txt_earn'的频率中选择*

连接两个文档ID之间的匹配项:

select c.docid as c_docid, d.docid as d_docid, c.term, c.count, d.count
from frequency c
join frequency d on c.term = d.term
where c.docid = '10080_txt_crude' and
    d.docid = '17035_txt_earn';

这将产生C DocID,D DocID,C和D中的相等项,C Count,D Count。

我正在尝试用这两个id获取DocID,然后列出术语匹配的项。例如,执行代码会得到包含docid 1的结果,但我想在下面列出docid 2中满足上述条件的docid。这有意义吗?我不知道我是否解释得很清楚。如果你想让结果并排出现,那就是选择c.*,d.*和一个连接。如果你想要一个高于另一个的结果,那就是一个联盟。使用联接更容易找到匹配项-SQL表达式可以跨联接引用列,但不能在行之间引用列。在SQL查询和其他操作中,行在数学上是独立的。所以带联接的selct*只能同时生成结果吗?这是一个h/w作业,当我找到正确答案时,我会及时通知你。我可能错过了什么。
SELECT docid,term,count
FROM Frequency
WHERE docid=docid1 or docid=docid2
GROUP BY docid,term,count
HAVING COUNT(*) >1 
SELECT docid,term,count
FROM Frequency
WHERE docid=docid1 or docid=docid2
GROUP BY docid,term,count
HAVING COUNT(*) >1