关于一个SQL语句的面试题

luxiaoban 2002-03-05 02:30:39
前几天去上海一家公司面试,
主考官给我出了一个SQL语句的题目:
有两个表分别叫A,B。
其中A的结构是:
ID Name Sex
B 的结构是:
ID Chinese English
现在要查询出ID为1001的学生的信息。
我是这样写的
Select ... where A.ID = 1001 and B.ID = 1001
那个主管说应该写成A.ID = B.ID and B.ID = 1001
我说这不是一样的吗,还和他争了几句(当然还是比较和气)。
后来我回家后自己试了一下,结果是一样的。

因为本人不是科班出生,所以有些基础知识不是很好。
请问各位大侠,这两种写法有什么不同吗?

另:最后我还是没有得到这个工作,不过不是上面说的原因。
...全文
88 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
steave 2002-03-06
  • 打赏
  • 举报
回复
习惯问题,考官的还是好比较简练
如果是多个表,就看书出考官 的优点来了
junglerover 2002-03-06
  • 打赏
  • 举报
回复
不完全是一样的,你要考虑到1001可能是个变量,所以
如果你那样写的话,在程序中组装SQL语句时就要用到这个变量两次,
而考官写的那个就只要用到一次,所以组装SQL语句时
执行效率会比较高,哈哈。

其实出一道那么弱智的SQL语句题目的公司,恐怕不会是什么好公司。
不去也罢。
long4u 2002-03-06
  • 打赏
  • 举报
回复
习惯问题,考官的还是好习惯
wgjsoft 2002-03-06
  • 打赏
  • 举报
回复
还是看点Sql的书把,
ggb1999 2002-03-05
  • 打赏
  • 举报
回复
这是个垃圾题目。
请用sql server的sqlquery analyzer看一下,(打开show execution plan模式)
这两个语句在sql后台执行的实际语句是以一样的!!!!

只是某些老古董头脑里的框框在作怪而已!!!



wangjianjiao 2002-03-05
  • 打赏
  • 举报
回复
当然不一样。
当数据量很少时,没有什么区别,但是数据量达到几百万,几千万后,这种检索方式就无法忍受了。
erickleung 2002-03-05
  • 打赏
  • 举报
回复
雖然表面上看來是一樣的結果, 但是他們的 Query Plan會是不同.
你的是2個 'Full Table Scan' 而考官的則是一個 'join'

執行速度會因Database的大小和結構, 便有很大分別. 相信就是這原因令主考官不滿意.
big_net 2002-03-05
  • 打赏
  • 举报
回复
有些人 总喜欢注意这些无关紧要的事情,虽然这是一种规范但我感觉有比这更重要的东西~~思维
seekabc 2002-03-05
  • 打赏
  • 举报
回复
测试
seekabc 2002-03-05
  • 打赏
  • 举报
回复
结果是一样的,但是需要完成的工作量是不一样的。先限制后联接比用先联接(笛卡儿乘积)后限制的工作量要少得多。
WilliamGui 2002-03-05
  • 打赏
  • 举报
回复
我赞成 40Star(陪你去看--☆流星雨★) 的看法如果是我,我能这样写
love4u 2002-03-05
  • 打赏
  • 举报
回复
结果当然一样,他的写法更简洁而以
我觉得能出来结果就是了,
不必在这些细节上纠缠,
看看印度程序员的代码就知道了
ChenAndy 2002-03-05
  • 打赏
  • 举报
回复
我在SQL的书上到是没看到过第一种方法,第二种方法是书上说的,因该是比较规范的,应该叫什么ANSI SQL吧。

或者说有不同版本的SQL语法,有的可能支持第一种吧。
delphime 2002-03-05
  • 打赏
  • 举报
回复
我也是觉得那个主考官的做法比较完整!
setfocus 2002-03-05
  • 打赏
  • 举报
回复
你可以看看,高教的《数据库原理》它上面有类似的例子!我上学的时候学过!
setfocus 2002-03-05
  • 打赏
  • 举报
回复
这应该属于范式,应该说主考官的说法更符合数据库原理,也就是书本上的教学模式,这是规范的!只是对于一个程序来说,途径不一样,结果相同!
知足常乐 2002-03-05
  • 打赏
  • 举报
回复
我来说几句

先连接后限制
peng_2001 2002-03-05
  • 打赏
  • 举报
回复
哪当然,因为这两个表是关联表,A.ID和b.id是它们相关联的字段。
xys 2002-03-05
  • 打赏
  • 举报
回复
其实这两种做法当然是一致的结果,我认为主考官应该不是不明白,而是采用他那种做法更精确一些,确切地说是一种编程思路的问题,因为即使完成了程序的功能,但做法与思路也很重要,关键是简洁性上更适合阅读!
40Star 2002-03-05
  • 打赏
  • 举报
回复
最好用Join
其实不用Join的话,应该一样

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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