java的jdbc和sqlserver的查询引擎

cxb1004 2003-11-11 11:25:47
我们知道sql是一个通用的结构化查询语句,关于它的标准有多个,特别麻烦的各个厂商在开发自己的产品时会使用自己修改或改进。我在这里就讨论一下jdbc和数据库引擎的一个区别:
相比之下,我觉得jdbc使用数据库的语法更加严格,比如这个语句:
select a.id,b.name from table a,table b where a.id=b.id
这个语句在两种情况下都能够执行;
但是
select a.id,name from table a ,table b where a,id=b.id

本来用来标志字段不同之处才使用 表名.字段,一般如果两张表中不一样的字段,没有必要那样写,但是,jdbc就认为查询没有结果,但是把查询语句复制到,查询器里面就可以执行了,可见jdbc 对于sql语句的解析是十分严格的。
...全文
70 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxb1004 2004-03-12
  • 打赏
  • 举报
回复
今天又遇到这个问题,看这个语句
select top 10 a.id,a.name from table1 a, table2 b where a.id=b.id and a.id not in (select top 0 a.id from table1 a,table2 b where a.id=b.id order by a.townid asc) order by a.townid asc
通常情况没有任何问题,但是在特殊情况:a表里面有townid一样的情况,这个时候在order by里面没有进一步的排序规定,那么,在SQLSERVER里面可以自动按照显示的列顺序进行排序,如上就是按照a.id排序,但是jdbc里面就没有这个默认的设置,这就造成了嵌套内外的排序顺序不同,使得翻页的时候有记录重复现象;改成了:
select top 10 a.id,a.name from table1 a, table2 b where a.id=b.id and a.id not in (select top 0 a.id from table1 a,table2 b where a.id=b.id order by a.townid asc,a.id asc) order by a.townid asc,a.id asc
这样就解决问题了。以后要小心,尽量在写条件的时候把条件卡死。

cxb1004 2003-11-11
  • 打赏
  • 举报
回复
以后遇到这种情况,首先要输出查询语句,然后复制到查询器,或是企业管理器里面进行查询,如果能够正确输出信息,那么很有可能是查询语句不规范,导致在不同标准下查询失误。

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧