从 to_tsvector 中选择 * - 连接表

Posted

技术标签:

【中文标题】从 to_tsvector 中选择 * - 连接表【英文标题】:Select * from to_tsvector - joining tables 【发布时间】:2017-02-02 23:10:11 【问题描述】:

我想设置to_tsvector 语言(例如:'French'),以便在渲染 FTS 向量时使用正确的字典。

表消息有一个locale_id 列,位于locales 表上。然后我需要将 locales 表加入到 locale_id 上的 languages 表中,以获取实际的语言名称。但我得到一个模棱两可的; 错误:

select * from to_tsvector(t3.language, t1.message) 
inner join message as t1 
inner join locales as t2 on (t1.locale_id = t2.id) 
inner join languages as t3 on (t2.language_id = t3.id);

错误:“;”处或附近的语法错误第 1 行:....id)

内连接语言为 t3 on (t2.language_id = t3.id);

【问题讨论】:

【参考方案1】:

较新的代码:

select to_tsvector(t3.language, t1.message) 
from message as t1 
inner join locales as t2 on (t1.locale_id = t2.id) 
inner join languages as t3 on (t2.language_id = t3.id);

原始修复:

select * from to_tsvector(t3.language, t1.message) 
inner join message as t1 on 1 = 1 /* an ON join criteria is mandatory here even if you are doing an implicit cross join */
inner join locales as t2 on (t1.locale_id = t2.id) 
inner join languages as t3 on (t2.language_id = t3.id);

【讨论】:

来自***.com/questions/15508142/… 我认为不需要 现在错误missing FROM-clause entry for table "t3" @Growler 也许在 mysql 中,但不是在大多数 SQL 方言中。如果您说 INNER JOIN,则需要一个 ON 子句。 (或使用 CROSS JOIN) @Growler 我明白了,我认为您可能不应该将 to_tsvector 视为表格。 select from to_tsvector 给出了向量的输出,尽管这是测试某些输入的好方法。否则你会怎么做?

以上是关于从 to_tsvector 中选择 * - 连接表的主要内容,如果未能解决你的问题,请参考以下文章

从连接表中选择计数

休眠:仅从一个表中选择所有而不是 3 个连接表

SQLAlchemy 仅从连接表中选择列

从连接表中选择 min

Propel:从别名连接表中选择列

MySQL - 从多个表中选择,可能没有连接?