繁体   English   中英

MSSQL-带有Java / JTDS和Join的无效列名

[英]MSSQL - Invalid column name with Java/JTDS and Join

我想在MSSQL 2005中使用Java和JTDS来执行以下语句。我需要这种方式,因为我想显示位置1-15、16-30等的结果。

SELECT TOP 15 WID,AID,de FROM 
(SELECT WID,AID, de, ROW_NUMBER() OVER (ORDER BY WID ASC) AS r_n_n 
FROM [database].[dbo].[table1], [database].[dbo].[table2] 
WHERE AID=Indicator) x WHERE r_n_n >= 1

当我在Microsoft SQL Management-Studio中复制此代码并执行时,它显示了预期的结果。 在Java中执行时

        s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        rs = s.executeQuery(sql);

它说“无效的列名'指标'”。 WID和AID来自表1。 de和Indicator来自表2。我使用Java和JDTS进行了其他几个查询,它们都工作正常。 只有带有Join的查询无效。 我认为这与此有关,但我不知道是什么。

有人有主意吗? 在此先感谢您,并致以最诚挚的问候。

编辑:当前我使用JTDS 1.2.5,但我也尝试了1.3.0,没有什么区别。

如果Indicatorde来自Table2 ,则在查询中写出。 不要假设它是隐含的。 同样,您应该使用JOIN子句而不是“旧式”隐式方式以应有的方式编写Joins。

另外,如果您使用的是TOP,则必须添加ORDER BY,否则您将不知道会得到15行。

不知道这是否对您有帮助,但是请尝试(类似)这样的方法:

SELECT TOP 15 WID,AID,de FROM 
(
    SELECT t1.WID, t1.AID, t2.de, ROW_NUMBER() OVER (ORDER BY t1.WID ASC) AS r_n_n 
    FROM [database].[dbo].[table1] t1
    INNER JOIN [database].[dbo].[table2] t2 ON t1.AID = t2.INDICATOR
) x 
WHERE r_n_n >= 1
ORDER BY r_n_n

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM