回 帖 发 新 帖 刷新版面

主题:请教一个关于SQL中的FROM子句的问题

在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:

  SELECT username,citytable.cityid
  FROM usertable,citytable
  WHERE usertable.cityid=citytable.cityid  


上面这段话是我在网上和书上见到的一个问题,想请教各位高手:
既然是两个表中同时存在一个cityid列,那直接用select cityid from usertable,citytable where usertable.cityid=citytable.cityid
不就可以了么,这句话的意思不就是相同的列来自于不同的表么???
还有,如果说应该是
  SELECT username,citytable.cityid
  FROM usertable,citytable
  WHERE usertable.cityid=citytable.cityid  
那好像这句话中也不该出现username 啊!!username 是从那来的呢???[em10]

回复列表 (共2个回复)

沙发

虽然两个表里的这个列是一样的
但系统并不知道到底去哪个表去取数据。
下面的username 也只能在一个表中有。

板凳

表中列名虽然一样,但有两个列名一样的表通常是用于连接集合用的,当select后面的表的列名不同,表示显示哪一个表的列内的值,不同的表可能不一样,原因是一个表可能是另一个表的子集,如学生表有学号和一些基本情况,选修课表有学号和所选课程,如果有学生没有选修任何课,那么显示学生表的学号是全集,显示选修课的学号只有部分。特别是在显示多个列时最有用。

我来回复

您尚未登录,请登录后再回复。点此登录或注册