SQL将变量传递给子查询
问题描述:
我无法将变量传递给子查询。SQL将变量传递给子查询
我有2个不同的表需要得到所有采访人员。
现在我的SQL
SELECT
empl.id AS id,
(SELECT
GROUP_CONCAT(interviewed_by SEPARATOR ', ')
FROM
(
SELECT
interview_old.interviewed_by
FROM
interview_old
WHERE
interview_old.empl = empl.id
UNION
SELECT
interview.interviewed_by
FROM
interview
WHERE
interview.empl = empl.id
)
as interviewed_by
) AS interviews
FROM
empl AS empl
这不是我完整的代码,所以我不能改变这部分
SELECT
empl.id AS id,
{only here allow insert custom sql}
FROM
empl AS empl
答
你的问题是不是100%清楚,但你可以通过启动将您的quesry转换为不使用子查询,但只需要LEFT JOIN
与GROUP
:
SELECT
empl.id AS id,
GROUP_CONCAT(i.interviewed_by SEPARATOR ', ')
FROM
empl AS empl
LEFT JOIN (
SELECT empl, interviewed_by
FROM interview_old
UNION
SELECT empl, interviewed_by
FROM interview
) i
ON i.empl = empl.id
GROUP BY empl.id
答
您需要从子查询中获得想要的结果,然后将整个事件与主表empl合并,然后通过empid进行分组。
SELECT
empl.id AS id, GROUP_CONCAT(interviewed_by SEPARATOR ', ')
FROM
(SELECT interview_old.empl employeeid, interview_old.interviewed_by as interviewed_by FROM interview_old
UNION
SELECT interview.empl,interview.interviewed_by
FROM interview) as tmp join empl AS empl on (empl.id=tmp.employeeid)
group by empl.id