【问题标题】:Error in JOIN while using Common Table Expresion使用公用表表达式时出现 JOIN 错误
【发布时间】:2021-06-13 14:35:03
【问题描述】:

我正在使用下面的表达式来找出哪些“资源”类型的客户拥有处于活动状态的“工作资源”。

WITH cte_ss AS (SELECT wr.user_id
FROM work w
JOIN work_resource wr ON wr.work_id = w.id
WHERE wr.work_resource_status_type_code = 'active'
  ),
SELECT u.uuid
FROM user u
JOIN company c ON c.id = u.company_id
LEFT JOIN cte_ss on cte_ss.user_id = u.id
    AND c.customer_type = 'resource'

White 试图运行它,我得到以下错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT u.uuid
FROM user u
JOIN company c ON c.id = u.company_id
LEFT JOIN cte_ss' at line 6

两个单独的查询(没有 LEFT JOIN)都在工作,所以不确定我在这里做错了什么

【问题讨论】:

    标签: mysql join relational-database common-table-expression


    【解决方案1】:

    一个 cte 看起来像这样

    但由于我对你的桌子一无所知,你必须自己弄清楚

    WITH cte_ss AS (
    SELECT 
    user_id
    FROM work w
    JOIN work_resource wr ON wr.work_id = w.id
    WHERE wr.work_resource_status_type_code = 'active'
    )
    SELECT u.uuid
    FROM user u
    JOIN company c ON c.id = u.company_id
    LEFT JOIN cte_ss on cte_ss.user_id = u.id
        AND c.customer_type = 'resource'
    

    【讨论】:

    • 哎呀抱歉没有意识到有格式错误
    • 这样就可以了,但是 'work' 没有 'user_id' 字段,work_resource 有。如果我将 wr.user_id 放在 CTE 表达式中,为什么它不起作用?
    • 正如我在回答中所说,我不知道您的表结构,我不知道您正在搜索什么结果....对于minimal reproducible example,您需要提供更多信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    相关资源
    最近更新 更多