Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql postgres中的嵌套选择_Sql_Postgresql - Fatal编程技术网

Sql postgres中的嵌套选择

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.

我有一个位(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.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;