仅使用Oracle方言从HSQLDB中选择一行

时间:2017-12-11 16:10:57

标签: sql hsqldb

正如标题所示,我需要从查询中选择一行(无论是什么)。由于ROWNUM函数,ROWNUM()在HSQLDB中不起作用。更重要的是,在连接网址设置和schema-hsqldb.sql中设置ORA方言都不起作用(它应该但它没有,我不知道为什么)。查询在Oracle中完全有效。

有什么建议吗?非常感谢你!

2 个答案:

答案 0 :(得分:1)

如果您使用ROWNUM()而不是简单ROWNUM而没有括号,则会出现错误。不确定它是如何在HSQLDB中管理的。

由于您使用的是12c,因此可以使用FETCH..FIRST..ONLY代替ROWNUM

select * from employees  FETCH FIRST 1 ROWS ONLY;

在较低版本中,您可以使用row_number(),前提是您在表上至少有一个UNIQUE KEY(不一定是声明的约束,但是一组列用于标识唯一行)。

select b.<columns>  FROM
(
  select t.*, row_number() OVER ( ORDER BY <unique_key_column_s) rn  from yourtable  t
) b WHERE  b.rn = 1;

答案 1 :(得分:1)

经过大约三天的搜索,哭泣并想着自杀,我发现在我的情况下(我有相当复杂的SQL)Hibernate前缀@ViewChild("mainScrollView") mainScrollView : ElementRef; ngAfterViewInit() { this.disableScrollView() } private disableScrollView(){ const scrollView: ScrollView = this.mainScrollView.nativeElement; console.log("scroll view :") console.dir(scrollView) if (isAndroid) { console.log("is Android") scrollView.android.requestDisallowInterceptTouchEvent(true); } } ROWNUM认为它是一个柱。我已经添加了以下自定义方言解析器,现在它可以工作:

THIS_