提供多个表时,简单连接在 H2 数据库中不起作用

Posted

技术标签:

【中文标题】提供多个表时,简单连接在 H2 数据库中不起作用【英文标题】:Simple Joins not working in H2 Database when giving multiple tables 【发布时间】:2014-10-11 11:34:41 【问题描述】:

我有很多表,想通过 H2 数据库中的连接检索数据,但是当给定多个表时,一个非常简单的连接不起作用。

SELECT a.*, b.name "make", c.name "model"
FROM basicInfo AS a, make_models AS b,  make_models AS c
WHERE a.make=b.id AND a.model = c.id;

如果我只加入两个表,例如:这可行,但是当给出多个表时,它显示查询成功执行但结果为 0 行。

这个查询类似于 mysql 的语法。我的查询有问题还是 H2 根本不支持它?

【问题讨论】:

【参考方案1】:

试试下面的查询

SELECT a.*, b.name "make", c.name "model"
FROM basicInfo AS a 
JOIN make_models AS b
ON a.make = b.id
JOIN make_models AS c 
ON a.model = c.id;

【讨论】:

好的,谢谢。但是问题是什么,因为据我所知,这两个查询都是相同的。不是吗? 你是对的,当使用两个表时它可以工作,但是如果有两个以上的表,你需要使用 JOIN 关键字。而且JOIN提高了查询的效率,是ANSI标准的方式。 "此外,JOIN 提高了查询的效率" - 这不是真的 @Rockse 查询的效率取决于您要获取的数据量、从中获取数据的列、为这些列定义的索引等等……性能不依赖于 JOIN 子句的使用。 这是真的,我的错误@AlbertoSolano,谢谢你纠正我。

以上是关于提供多个表时,简单连接在 H2 数据库中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

saveOrUpdate 在带有 H2 数据库的 Spring Data 中不起作用

Update() 方法在带有 h2 数据库的 Play Framework 中不起作用

SQL 视图别名在 H2 SELECT 语句中不起作用

连接表时H2数据库重复行

PHP登录访问在Web服务器中不起作用

堆叠的 flexbox 垂直居中在 chrome 中不起作用