mysql连接查询条件为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql连接查询条件为空相关的知识,希望对你有一定的参考价值。
参考技术A 如:select a.*,b.* from a left join b on a.code = b.code若a 表中code 有为null的记录,b 表中也有code为null 的记录时
查询结果不会去空,b表中code为null的记录也不会被查出
如:select a.*,b.* from a left join b on a.code = b.code
若a 表中code 有为null的记录,b 表中也有code为null 的记录时
查询结果会去除 a表中code为null的记录以及b表中code为null的记录
MySQL查询-条件时连接和连接,否则为空
【中文标题】MySQL查询-条件时连接和连接,否则为空【英文标题】:MySQL query- join and concatenate when condition, else null 【发布时间】:2021-10-17 20:07:37 【问题描述】:我有一张食谱表和一张图片表。
食谱:
id | title |
---|---|
1 | 'Pancake' |
2 | 'Pudding' |
3 | 'Pizza' |
图片:
id | recipe_id | url |
---|---|---|
1 | 1 | 'images\pancake1' |
2 | 1 | 'images\pancake2' |
3 | 2 | 'images\pizza |
我想用 images.url 加入食谱并像这样连接网址:
recipe_id | urls |
---|---|
1 | 'images\pancake1, images\pancake2' |
2 | 'images\pizza' |
3 | null |
但我明白了:
recipe_id | urls |
---|---|
1 | null |
2 | 'images\pancake1, images\pancake2, images\pizza' |
3 | null |
我的查询是:
SELECT r.*,
CASE WHEN i.recipe_id = r.id THEN
GROUP_CONCAT(i.url)
END AS url
FROM recipes r
JOIN images i
GROUP BY r.id;
【问题讨论】:
复制漂亮格式的 SQL 命令和数据使用 dbfiddle.uk 及其 Markdown 导出按钮 所以我对LEFT OUTER JOIN
的第一条评论是正确的en.wikipedia.org/wiki/Join_(SQL)
【参考方案1】:
您的联接甚至没有 ON
子句。
你需要LEFT
加入:
SELECT r.id recipe_id,
GROUP_CONCAT(i.url ORDER BY i.id) urls
FROM Recipes r LEFT JOIN Images i
ON i.recipe_id = r.id
GROUP BY r.id
【讨论】:
美丽。我有相同的 on 子句,但 left join 成功了。 @MosheM 您也可以通过伪聚合添加标题列。见dbfiddle.uk/…以上是关于mysql连接查询条件为空的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 左连接时,查询条件查询某个字段为空或者为特定值解决方案
MySQL 左连接时,查询条件查询某个字段为空或者为特定值解决方案