我有以下MySQL查询,该查询应该返回表a和b中的记录(一对多关系),以及用逗号分隔的列表,其中列出了从表c返回的任何值。但是,表c中不会总是有记录(这就是为什么我使用LEFT
OUTER JOIN将其联接到表a中的原因)。
SELECT `a`.`id` , `a`.`name` , `b`.`id` AS `b_id` , `b`.`name` AS `b_name` , GROUP_CONCAT( `c`.`l_id` ) AS `c_ls`
FROM `a`
INNER JOIN `b` ON `a`.`b_id` = `b`.`id`
LEFT OUTER JOIN `c` ON `a`.`id` = `c`.`a_id`
GROUP BY `a`.`id`
ORDER BY `a`.`created` DESC
上面的查询应返回2时返回1条记录。记录1在表c中具有3条匹配记录,记录2在表c中具有0条匹配记录。
查询返回:
id | name | b_id | b_name | c_ls
1 | John | 2 | Bla | [BLOB - 3 B]
如果删除GROUP_CONCAT和GROUP_BY子句,则它将返回2条记录:
id | name | b_id | b_name | c_ls
1 | John | 2 | Bla | [BLOB - 3 B]
2 | Fred | 3 | Blo | [BLOB - NULL]
似乎如果c_ls为null,则GROUP_CONCAT阻止返回该行。关于我在做什么错有什么想法吗?
不幸的是,以前标记为正确的答案是错误的(如用户desaivv在评论中指出的那样)。
它必须读取 IFNULL ,[不是ISNULL,isnull只需要一个参数并返回一个布尔值]!
IFNULL如果为null,则返回第二个参数:
SELECT `a`.`id` , `a`.`name` , `b`.`id` AS `b_id` , `b`.`name` AS `b_name` ,
IFNULL(GROUP_CONCAT( `c`.`l_id` ), '') AS `c_ls`
FROM `a`
INNER JOIN `b` ON `a`.`b_id` = `b`.`id`
LEFT OUTER JOIN `c` ON `a`.`id` = `c`.`a_id`
GROUP BY `a`.`id`
ORDER BY `a`.`created` DESC
但这根本不是解决方案! 我们需要的是“复杂的”联接-
因此,请检查此SQL Fiddle: http
**://www.sqlfiddle.com/#!2 /
54c6f /
3/0**
我有点像 其中,注册表保存所有类型为Toy的对象的跟踪。当提供密钥时,它将返回有效的Toy实例。 当我这样做的时候,玩具。蝙蝠,它给我空值,但注册表。getToy(“BAT”)返回我的有效玩具实例。 公共类注册{ } 我有什么明显遗漏的吗? 另外,我正在给注册中心打电话。getToy(“蝙蝠”)和玩具。getToy(“蝙蝠”)同时。。 这里是测试注册表失败 导入静态组织。朱尼特。断言。*; 导入组
问题内容: 我有一组复选框,这些复选框在选中时将值传递为1,否则将值传递为0。但是,不是将未选中的复选框的值发送为“ 0”,而是发送的值为“ NULL”。 我在下面的JS代码中应将值相应地设置为0/1,但是仍然将该值作为NULL发送。有什么方法可以确保在未选中复选框的情况下传递的值为0? 更新 这是我的html: 默认情况下,它们都被选中。 如果未选中其中之一,则MySQL报告以下错误:0SQLS
我的预览在方法中调用时返回null。测试类确实扩展了,因为它被保存在
当我在android Studio中集成OpenCV进行眼睛检测时。集成后消息打印Opencv安装成功消息生成,但出现错误。 无法从加载器加载detection_based_trackerdalvik.system.PathClassLoader[DexPathList[[zip file"/data/app/com.example.admin.lanskart-2.apk],nativeLibr
这一行是: 我在和上尝试了和,但仍然给出相同的错误
(免责声明:人们通过facebook、firebase等请求询问使用异步操作时数据为空/不正确时,会产生很多问题。我提出这个问题的目的是为每个从android异步操作开始的人提供一个简单的答案。) 我试图从我的一个操作中获取数据,当我使用断点或日志调试它时,值就在那里,但当我运行它时,它们总是空的,我该如何解决这个问题呢? 火力基地 脸书 等。