【问题标题】:Select * from to_tsvector - joining tables从 to_tsvector 中选择 * - 连接表
【发布时间】: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);

【问题讨论】:

    标签: postgresql full-text-search


    【解决方案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);
    

    【讨论】:

    • 来自stackoverflow.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 给出了向量的输出,尽管这是测试某些输入的好方法。否则你会怎么做?
    猜你喜欢
    • 2014-01-07
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    相关资源
    最近更新 更多