小编Bri*_*ian的帖子

Oracle 11G中的INSERT SELECT语句

我正在尝试在Oracle 11g中运行一个非常简单的sql语句.

 insert into table1 (col1, col2) values (select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2);
Run Code Online (Sandbox Code Playgroud)

非常简单的查询.笛卡尔将旧表1连接到旧表2,将结果值放入表1中.

我自己运行子查询,它完美地运行.

 select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2
Run Code Online (Sandbox Code Playgroud)

当我尝试运行完整语句时,我收到以下错误:

 SQL Error: ORA-00936: missing expression
 00936. 00000 -  "missing expression"
Run Code Online (Sandbox Code Playgroud)

我无法让它在MySql中工作.我的陈述有些不对劲,但我不确定它是什么.

sql oracle oracle11g

33
推荐指数
3
解决办法
19万
查看次数

Oracle 11G中的LIMIT/OFFSET

我正在尝试更新Oracle中的表,我遇到了一些困难.我正在移植MySQL中的代码,并且Oracle不支持MySQL允许的一些命令.

这是MySQL代码:

 update table1 t1 set c5 = (select ContractID from table2 t2 where t1.assetid = 
 t2.assetid and t1.lastdate >= t2.lastdate and t1.firstdate= t2.firstdate 
 order by lastdate asc limit 1 offset 4);
Run Code Online (Sandbox Code Playgroud)

子查询返回一个ContractIDS列表,按lastdate排序,我只想要一个特定的,因此限制1偏移X命令.

问题如下.Oracle不支持"limit"或"offset"命令.使用rownum和嵌套查询有限制问题的解决方法,但Oracle 11G解析器在UPDATE命令中不喜欢它们.

在我需要更新命令中的限制之前,我遇到了类似的问题,但没有偏移.这里解决了:MySQL到Oracle语法错误(限制/偏移/更新)

Florin Ghita使用分析功能找到了一种解决方法.

 update table1 alf
  set nextcontractid = 
      (SELECT min(contractid) keep (dense_rank first order by lasttradedate asc) 
      FROM table1copy alf2
      WHERE alf2.assetid     = alf.assetid
      AND alf2.lasttradedate > alf.lasttradedate
      )
  where alf.complete = 0
Run Code Online (Sandbox Code Playgroud)

这种解决方法允许我获取顶部或底部条目(通过在dense_rank命令中使用asc或desc),但是如果我想要第二行或第三行,我无法找到offset命令的代理.

我尝试过的另一个解决方案是使用嵌套查询.第一个使用rownum命令获得前5行,以相反的方式对它们进行排序,从最后四行开始减去.此解决方案失败,因为Oracle解析器无法理解对其中一个嵌套查询中引用的最外层命令中的表的引用.

(与之前的问题相同:MySQL到Oracle语法错误(限制/偏移/更新))

挑战不仅仅是在oracle中运行带有限制和偏移的select语句,因为我已经可以通过嵌套查询来做到这一点.挑战是让select语句在update语句中工作,因为即使语句在语法上是正确的,Oracle解析器也无法对它们进行解码.到目前为止,嵌套查询(和谷歌)已经失败了.

还有其他人有过类似的问题吗?

mysql sql oracle offset oracle11g

7
推荐指数
1
解决办法
6314
查看次数

在Windows中构建GSL(GNU Scientific Library)以与VS2005一起使用

我正在尝试让GSL在我的团队的Windows环境中工作,而且我遇到了很多问题.

我的团队在VS2005中使用C++开发,我们想使用GSL.我已经下载了GSL-1.15 tar.gz,并解压缩了它,但我不确定该怎么做 - 我相信只有两个编译器才能正确构建它.

在GNU网站上,它表示GSL的编译版本在Windows上作为Cygwin的一部分提供,所以我安装了Cygwin,但是我再也不知道该怎么做了.

理想情况下,我想要获得的是我的C:\上的一个文件夹,其中包含一些dll/libs,我可以在VS2005中链接到这些文件夹以使用GSL函数.我知道VS的GSL端口(http://gladman.plushost.co.uk/oldsite/computing/gnu_scientific_library.php),但我们不能依赖它们,因为我依赖于发布者发布端口每次发布新版本的GSL时.

有没有人成功地完成了构建GSL并让它在VS2005中使用C++的过程?我做了一些谷歌搜索,没有发现任何我理解的东西.

谢谢.

cygwin gnu gsl

7
推荐指数
1
解决办法
4186
查看次数

标签 统计

oracle ×2

oracle11g ×2

sql ×2

cygwin ×1

gnu ×1

gsl ×1

mysql ×1

offset ×1