MySQL连接两个表以从子级获取具有限制的记录

安库·雷亚尼(Ankur Ra​​iyani)

我有两张桌子

Technology
+--------+--------+
| tid(P) |  name  |
+--------+--------+
|   1    |   Java |
|--------|--------|
|   2    |   PHP  |
+--------+--------+

Employee
+----------+----------+------------+
|  eid(P)  |  tid(F) ^| join_date  |
+----------+----------+------------+
|    1     |     1    | 2013-10-01 |
|----------|----------|------------|
|    2     |     1    | 2013-10-10 |
|----------|----------|------------|
|    3     |     1    | 2013-10-12 |
|----------|----------|------------|
|    4     |     1    | 2013-09-10 |
|----------|----------|------------|
|    5     |     1    | 2013-11-10 |
|----------|----------|------------|
|    6     |     1    | 2013-12-10 |
|----------|----------|------------|
|    7     |     2    | 2013-08-01 |
|----------|----------|------------|
|    8     |     2    | 2013-10-28 |
|----------|----------|------------|
|    9     |     2    | 2013-05-12 |
|----------|----------|------------|
|    10    |     2    | 2013-10-10 |
|----------|----------|------------|
|    11    |     2    | 2013-11-10 |
|----------|----------|------------|
|    12    |     2    | 2013-12-05 |
|----------|----------|------------|

对于每种技术,我需要获取最近加入三名员工的数据我尝试了不同的联接,也对此进行了谷歌搜索,但未获得任何成功。

Expected Result
+-------+--------+-------+------------+
|  tid  |  name  |  eid  | join_date  |
+-------+--------+-------+------------+
|   1   |  Java  |   6   | 2013-12-10 |
+-------+--------+-------+------------+
|   1   |  Java  |   5   | 2013-11-10 |
+-------+--------+-------+------------+
|   1   |  Java  |   3   | 2013-10-12 |
+-------+--------+-------+------------+
|   2   |  PHP   |   12  | 2013-12-05 |
+-------+--------+-------+------------+
|   2   |  PHP   |   11  | 2013-11-10 |
+-------+--------+-------+------------+
|   2   |  PHP   |   8   | 2013-10-28 |
+-------+--------+-------+------------+

我应该查询什么?

请指导。

谢谢,
Ankur

萨哈什·沙(Saharsh Shah)

尝试这个:

SELECT A.tid, A.name, A.eid, A.join_date 
FROM (SELECT IF(@tid = @tid:=t.tid, @cnt:=@cnt+1, @cnt:=0) rowNo, t.tid, t.name, e.eid, e.join_date 
      FROM Technology t 
      INNER JOIN Employee e ON t.tid = e.tid, (SELECT @tid:=0, @cnt:=0) A
      ORDER BY t.tid, e.join_date DESC
     ) AS A
WHERE A.rowNo < 3;

编辑::

SELECT * FROM(
    SELECT *, IF(@tid=@tid:=result.tid,@count:=@count+1,@count:=0) as pos
    FROM
        (SELECT t.tid, t.name, e.eid, e.join_date
          FROM Technology t
          JOIN Employee e
          WHERE e.tid = t.tid
          ORDER BY t.tid, e.join_date DESC) result
          JOIN (SELECT @tid:=0, @count:=0) c) finalre
where finalre.pos < 3;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQLi从两个有限制的表中选择

来自分类Dev

连接两个表,但仅获取最新的关联记录

来自分类Dev

mysql在一个查询中具有不同记录的两个表

来自分类Dev

Scala:获取具有两个限制的列表元素

来自分类Dev

yii2:无法从具有活动记录的两个表中获取数据

来自分类Dev

获取具有相同日期的两个表的记录

来自分类Dev

如何从具有多个where条件的两个表中获取记录

来自分类Dev

MYSQL合并具有不同条目记录数的两个表的视图

来自分类Dev

MySQL在两个表之间获取不同的记录

来自分类Dev

在mysql中的两个表上获取记录匹配

来自分类Dev

如何使用Mysql连接具有不同值的两个表

来自分类Dev

MySQL:连接两个具有匹配行名称的表

来自分类Dev

连接具有特定列的两个表

来自分类Dev

如何连接具有不同列的两个表

来自分类Dev

连接两个Mysql表以获取多个列的名称

来自分类Dev

从两个具有COUNT个表的MySQL SELECT

来自分类Dev

MySQL查询从具有内部联接,别名的两个表中获取数据

来自分类Dev

MYSQL合并两个表的视图,这些表在日期范围内具有不同的条目记录数

来自分类Dev

连接具有多个引用和两个值的两个表以进行添加

来自分类Dev

连接两个表以获取匹配的记录以及不匹配的记录

来自分类Dev

连接两个MYSQL数据库表,并检查第二个表是否没有记录,然后返回FALSE;如果某列具有某些特定值,则也返回FALSE

来自分类Dev

MySQL中具有两个以上维度的表

来自分类Dev

MySQL连接两个表,另一个字段具有最大值

来自分类Dev

连接两个表并获取值

来自分类Dev

将具有更多连接的两个表连续连接到同一表

来自分类Dev

连接两个表并返回出现在两个表中的所有记录

来自分类Dev

获取父级记录两个级别

来自分类Dev

MySQL:使用具有公共基表的外键的两个表表达完全连接

来自分类Dev

mysql左连接两个表

Related 相关文章

  1. 1

    MySQLi从两个有限制的表中选择

  2. 2

    连接两个表,但仅获取最新的关联记录

  3. 3

    mysql在一个查询中具有不同记录的两个表

  4. 4

    Scala:获取具有两个限制的列表元素

  5. 5

    yii2:无法从具有活动记录的两个表中获取数据

  6. 6

    获取具有相同日期的两个表的记录

  7. 7

    如何从具有多个where条件的两个表中获取记录

  8. 8

    MYSQL合并具有不同条目记录数的两个表的视图

  9. 9

    MySQL在两个表之间获取不同的记录

  10. 10

    在mysql中的两个表上获取记录匹配

  11. 11

    如何使用Mysql连接具有不同值的两个表

  12. 12

    MySQL:连接两个具有匹配行名称的表

  13. 13

    连接具有特定列的两个表

  14. 14

    如何连接具有不同列的两个表

  15. 15

    连接两个Mysql表以获取多个列的名称

  16. 16

    从两个具有COUNT个表的MySQL SELECT

  17. 17

    MySQL查询从具有内部联接,别名的两个表中获取数据

  18. 18

    MYSQL合并两个表的视图,这些表在日期范围内具有不同的条目记录数

  19. 19

    连接具有多个引用和两个值的两个表以进行添加

  20. 20

    连接两个表以获取匹配的记录以及不匹配的记录

  21. 21

    连接两个MYSQL数据库表,并检查第二个表是否没有记录,然后返回FALSE;如果某列具有某些特定值,则也返回FALSE

  22. 22

    MySQL中具有两个以上维度的表

  23. 23

    MySQL连接两个表,另一个字段具有最大值

  24. 24

    连接两个表并获取值

  25. 25

    将具有更多连接的两个表连续连接到同一表

  26. 26

    连接两个表并返回出现在两个表中的所有记录

  27. 27

    获取父级记录两个级别

  28. 28

    MySQL:使用具有公共基表的外键的两个表表达完全连接

  29. 29

    mysql左连接两个表

热门标签

归档