Das*_*123 8 mysql sql join group-by
我有一种情况,我有一个标题表(t1)和另一个表有多个链接,以一对多的关系引用这些标题(t2).
我想要的是返回的标题的完整列表,其中包含一个标志,指示是否存在与之关联的特定链接.
左加入和分组依据:
SELECT
t1.id
, t1.title
, t2.link_id AS refId
FROM
t1
LEFT JOIN t2
ON (t1.id = t2.title_id)
GROUP BY t1.id;
Run Code Online (Sandbox Code Playgroud)
这很接近,因为它在refId列中给出了第一个link_id或NULL.
现在,如果我有一个特定的link_id而不是允许t2运行整个数据集,我如何约束结果?
如果我添加一个WHERE子句,例如:
WHERE t2.link_id = 123
Run Code Online (Sandbox Code Playgroud)
我只获得了link_id匹配的几条记录,但我仍然需要在refId列中返回NULL的完整标题集,除非link_id = 123.
希望有人能提供帮助
blt*_*t04 13
而不是在WHERE子句中,将您的条件放在LEFT JOIN子句中:
SELECT
t1.id
, t1.title
, t2.link_id AS refId
FROM
t1
LEFT JOIN t2
ON t1.id = t2.title_id AND t2.link_id = 123
GROUP BY t1.id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11365 次 |
| 最近记录: |