从 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 中选择 * - 连接表的主要内容,如果未能解决你的问题,请参考以下文章