【发布时间】:2020-09-23 13:08:47
【问题描述】:
我构建了一个 sql 查询,但没有得到我期望的结果。我试图解释我对 sql 语句的步骤是什么。
首先我有我在 IN() 子句中使用的子选择:
SELECT GROUP_CONCAT(job_id SEPARATOR ',') as job_ids
FROM candidate_job
WHERE candidate_id = 1111
GROUP BY candidate_id
结果是 1,7,37,38,39,135,136,这正是我所期望的。 然后我在我的外部 sql 语句中使用这些合并的数字:
SELECT GROUP_CONCAT(DISTINCT(user_id) SEPARATOR ',') as user_ids
FROM user_job
WHERE job_id IN (1,7,37,38,39,135,136)
这给了我 139,539,1686,1759,这也正是我所期望的。
现在我结合两个查询,第一个是第二个的 IN() 子句的子选择:
SELECT GROUP_CONCAT(DISTINCT(user_id) SEPARATOR ',') as user_ids
FROM user_job
WHERE job_id IN (
SELECT GROUP_CONCAT(job_id SEPARATOR ',') as job_ids
FROM candidate_job
WHERE candidate_id = 1111
GROUP BY candidate_id
)
结果只有 139,539,我不明白为什么它不是应该的 139,539,1686,1759。
有人知道为什么会这样吗?在 IN() 中使用 GROUP_CONCAT() 列应该不会那么罕见吧?
【问题讨论】:
标签: mysql sql subquery where-clause