如果列值为null,请使用其他列

CJx*_*JxD 1 mysql sql csv join

首先,不要骂我试图这样做 - 我的老板要我将多个表中的数据列表转储到一个CSV文件中.

此CSV包含两类人员合并为一张表:永久员工承包商.

某些值的获取方式取决于您所属的类别.例如,如果您是承包商,那么您的职位描述就在contractors.blended_role.如果您是永久性的,职位描述就在roles.blended_role哪里roles.id = staff.role.

所以我试过(像这样):

SELECT
    stuff,
    (CASE
        WHEN c.blended_role IS NULL THEN
            r.blended_role
        ELSE
            c.blended_role
        END) as `Job Description`,
    morestuff
FROM
    everyone e
LEFT JOIN contractors c
    ON c.id = e.id
LEFT JOIN staff s
    ON s.id = e.id
LEFT JOIN roles r
    ON r.id = s.role
Run Code Online (Sandbox Code Playgroud)

但是我遇到了语法错误

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 'stuff, (CASE WHEN c.blended_role IS NULL THEN r.blended_role EL` at line 2
Run Code Online (Sandbox Code Playgroud)

有人可以建议替代方案吗?

更新

语法错误来自缺少逗号几行.

Gor*_*off 5

您没有名为rv和的表别名cv.也许你的意思是:

SELECT
    (CASE
        WHEN c.blended_role IS NULL THEN
            r.blended_role
        ELSE
            c.blended_role
        END) as `Job Description`
Run Code Online (Sandbox Code Playgroud)

或者,更简单:

coalesce(c.blended_role, r.blended_role) . . .
Run Code Online (Sandbox Code Playgroud)