Sql postgres中的嵌套选择
我有一个位(10)字符串,我想执行AND运算,然后得到1的数量,然后除以位字符串的长度(在本例中是10)。以下是查询:Sql postgres中的嵌套选择,sql,postgresql,Sql,Postgresql,我有一个位(10)字符串,我想执行AND运算,然后得到1的数量,然后除以位字符串的长度(在本例中是10)。以下是查询: select a.doc , a.sentenceid , b.doc , b.sentenceid , LENGTH( REPLACE( CAST( select a.tokenizedsentence & b.tokenizedsentence AS TEXT ), '0', '')) / LENGTH(a.
select a.doc
, a.sentenceid
, b.doc
, b.sentenceid
, LENGTH( REPLACE( CAST( select a.tokenizedsentence & b.tokenizedsentence AS TEXT ), '0', '')) / LENGTH(a.tokenizedsentence)
from
nlpdata a, nlpdata b
where
a.sentenceid < b.sentenceid;
及
您不需要在
CAST
中选择。删除选择以修复错误
SELECT a.doc,
a.sentenceid,
b.doc,
b.sentenceid,
Length(Replace(Cast(a.tokenizedsentence & b.tokenizedsentence AS TEXT), '0', '')) / Length(a.tokenizedsentence)
FROM nlpdata a
INNER JOIN nlpdata b
ON a.sentenceid < b.sentenceid;
选择一个.doc,
a、 句子ID,
b、 博士,
b、 句子ID,
长度(替换(转换(a.Tokenized句子和b.Tokenized句子为文本),'0','')/Length(a.Tokenized句子)
来自nlpdata a
内部连接nlpdata b
关于a.sentenceid
作为旁注,始终使用内部联接
联接两个表,而不是老式的逗号分隔联接
就性能而言,不会有任何区别<代码>内部联接
比逗号分隔联接
可读性更强,其中过滤器和联接条件将出现在where
子句中。在内部联接
中,您可以将联接条件保留在子句上,并将筛选器移动到Where
子句中,您不需要在强制转换中选择。删除选择以修复错误
SELECT a.doc,
a.sentenceid,
b.doc,
b.sentenceid,
Length(Replace(Cast(a.tokenizedsentence & b.tokenizedsentence AS TEXT), '0', '')) / Length(a.tokenizedsentence)
FROM nlpdata a
INNER JOIN nlpdata b
ON a.sentenceid < b.sentenceid;
选择一个.doc,
a、 句子ID,
b、 博士,
b、 句子ID,
长度(替换(转换(a.Tokenized句子和b.Tokenized句子为文本),'0','')/Length(a.Tokenized句子)
来自nlpdata a
内部连接nlpdata b
关于a.sentenceid
作为旁注,始终使用内部联接
联接两个表,而不是老式的逗号分隔联接
就性能而言,不会有任何区别<代码>内部联接
比逗号分隔联接
可读性更强,其中过滤器和联接条件将出现在where
子句中。在内部联接
中,您可以将联接条件保留在
子句上,并将筛选器移动到Where
子句非常感谢。为什么内部连接
比nlpdata a、nlpdata b
更好?非常感谢。为什么内部连接
比nlpdata a、nlpdata b
更好?
SELECT a.doc,
a.sentenceid,
b.doc,
b.sentenceid,
Length(Replace(Cast(a.tokenizedsentence & b.tokenizedsentence AS TEXT), '0', '')) / Length(a.tokenizedsentence)
FROM nlpdata a
INNER JOIN nlpdata b
ON a.sentenceid < b.sentenceid;