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 左连接时,查询条件查询某个字段为空或者为特定值解决方案

MySQL - 连接表查询为空,这使整个查询为空

Jmeter数据库正常连接,可以正常查询数据,但是当条件为汉字是查询条件无效返回数据为空;

mysql只能取出一条记录为啥不显示

mybatis连接mysql的模糊查询,查询出来为空