首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jave SQL executeQuery为有效的sql语句抛出错误

问Jave SQL executeQuery为有效的sql语句抛出错误
EN

Stack Overflow用户
提问于 2012-07-04 19:51:45
回答 3查看 268关注 0票数 1

我使用java java.sql.*从SQLite DB进行查询。我发现了一个严重的问题,我把sqlString写成:

代码语言:javascript
复制
SELECT n.Name as Name, 
       c.Value as Value0, 
       d.Value as Value1 
FROM  (Table1 c inner join Table2 n on c.NameID = n.ID),
      Table3 d 
WHERE c.RunID = 1 
      and d.RunID = 2 
      and c.NameID = d.NameID

语句stmt.executeQuery(sqlQuery)抛出以下异常:

代码语言:javascript
复制
java.sql.SQLException: no such column: n.Name
at org.sqlite.DB.throwex(DB.java:288)
at org.sqlite.NativeDB.prepare(Native Method)
at org.sqlite.DB.prepare(DB.java:114)
at org.sqlite.Stmt.executeQuery(Stmt.java:89).............

Name已经是Table2表的一部分。同样的语句在SQLite命令提示符下运行正常。但是当我去掉左方括号并尝试从java执行时,就没有问题了。你知道为什么会这样吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-04 20:06:56

尝试这样的操作,使用sub resultset

代码语言:javascript
复制
SELECT rs1.Name AS NAME, 
       rs1.Value0 AS Value0, 
       d.Value AS Value1 
FROM  (SELECT n.Name AS NAME, 
       c.Value AS Value0, 
       d.Value AS Value1 
       FROM Table1 c INNER JOIN Table2 n ON c.NameID = n.ID) rs1,
      Table3 d 
WHERE c.RunID = 1 
      AND d.RunID = 2 
      AND c.NameID = d.NameID
票数 0
EN

Stack Overflow用户

发布于 2012-07-04 20:03:51

无法在外部引用内部查询中使用的变量。例如,您在内部sql中使用了变量n。但你是在外面引用它。变量n超出了它的作用域。

票数 0
EN

Stack Overflow用户

发布于 2012-07-04 20:10:37

朋友们,谢谢你的快速回复。我能够解决这个问题。我正在分享这个,所以如果any1其他人得到这个问题,可以这样做:

代码语言:javascript
复制
SELECT ABC.Name as Name, ABC.Value as Value0, d.Value as Value1
  FROM
  (select n.Name as Name, c.Value as Value0 from Table1 c
   inner join Table2 n on c.NameID = n.ID) AS ABC,
Table3 d ......;

致以敬意,Tor

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11328549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档