这个简单,关键是要 学历表的ID,自动增长(第一条到第N条,学历依次增高),可以使用,max函数来判断.................

解决方案 »

  1.   

    最好做标示列便于统计。如1代表硕士2代表本科3代表专科。select a.uid,a.name,b.学历,max(b.取得日期) from tb1,tb2
    where a.uid=b.uid 
    group by a.uid,a.name,b.学历
    order by a.uid 
      

  2.   

    我用max(取得日期),好像没有用。不知道max是不是只对数字有用。
    我试下改成时间戳的方式保存日期看看。
      

  3.   

    SELECT * FROM A INNER JOIN B B1 ON A.UID=B1.UID
    WHERE NOT EXISTS(SELECT 1 FROM B WHERE B1.UID=UID AND B1.取得日期 <取得日期)
      

  4.   

    一种方法,先用子查询得到每个人的最终学历时间,然后求得最终学历
    SELECT a.UID, b.`Name`, c.学历, c.取得时间 
    FROM (
    -- 获得每个人的最终学历取得时间
    SELECT UID, MAX(取得时间) 取得时间
    FROM Cred b
    GROUP BY UID) a, Stu b, Cred c
    WHERE a.UID=b.UID AND b.UID=c.UID AND a.取得时间=c.取得时间二种方法,与4楼相同,排除每个人取得时间较早的记录:
    SELECT a.UID, a.`Name`, 学历, 取得时间 
    FROM Stu a INNER JOIN Credb b ON a.UID=b.UID
    WHERE NOT EXISTS(SELECT 1 FROM Cred c WHERE c.UID=b.UID AND b.取得时间 <c.取得时间)
      

  5.   


    大侠请问,from后面还能跟两个表名?                                                                                                 小白飘过
      

  6.   


    还有请问,group by后面跟很多列是什么意思,一直绕不过来这个弯子,是说根据这么多列一起分组么??
      

  7.   

    表结构:
    CREATE TABLE `t1` (
      `uid` int(11) DEFAULT NULL,
      `name` varchar(30) DEFAULT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `t2` (
      `id` INT(11) DEFAULT NULL,
      `学历` VARCHAR(30) DEFAULT NULL,
      `取得时间` CHAR(7) DEFAULT NULL,
      `uid` INT(11) DEFAULT NULL
    ) ENGINE=MYISAM DEFAULT CHARSET=utf8;表数据:
    insert  into `t1`(`uid`,`name`) values (1,'张三'),(2,'李四'),(3,'王五');
    insert  into `t2`(`id`,`学历`,`取得时间`,`uid`) values (1,'本科','2012-07',1),(2,'大专','2010-07',2),(3,'本科','2013-07',2),(4,'硕士','2013-07',3),(5,'本科','2009-09',3);查询SQL:
    SELECT *
    FROM (SELECT
            t1.uid          AS uid,
            t1.name         AS NAME,
            t2.学历       AS 学历,
            t2.取得时间 AS 取得时间
          FROM t1,
            t2
          WHERE t1.uid = t2.uid) t3
    WHERE NOT EXISTS(SELECT
                       1
                     FROM t2
                     WHERE t3.取得时间 < t2.取得时间
                         AND t3.uid = t2.uid);---------------------注: 如果你想尽快的得到你要的结果,请贴出你的表结构和表数据---------------