SQL从同一表中选择两个最大行,并与第三个表连接

亚尼夫

混合的两个表:

项目

| item_id | user_id | data |
----------------------------
| 10       | 100    | A    |
| 11       | 100    | C    |
| 12       | 101    | E    |
| 13       | 101    | G    |

item_detail

| id | item_id | ignore | detail1 | detail2 | detail3 | detail4 |
-----------------------------------------------------------------
| 1  | 10      |   0    |   h1    |   h2    |  h3     |  h4     |
| 2  | 10      |   0    |   g1    |   g2    |  g3     |  g4     |
| 3  | 10      |   1    |   f1    |   f2    |  f3     |  f4     |
| 4  | 11      |   0    |   e1    |   e2    |  e3     |  e4     |
| 5  | 11      |   0    |   d1    |   d2    |  d3     |  d4     |
| 6  | 11      |   1    |   c1    |   c2    |  c3     |  c4     |
| 7  | 12      |   0    |   b1    |   b2    |  b3     |  b4     |
| 8  | 13      |   0    |   a1    |   a2    |  a3     |  a4     |

我需要通过item_id从item_detail的最大ID中找到detail1,detail2,并通过item_id从item_detail的MAX NON IGNORED ID的detail3,detail4中找到,并与项目行一起显示。
预期结果:

| item_id | user_id | data | detail1 | detail2 | detail3 | detail4 |
--------------------------------------------------------------------
| 10      | 100     | A    |   f1    | f2      | g3      | g4      |       
| 11      | 100     | C    |   c1    | c2      | d3      | d4      |
| 12      | 101     | E    |   b1    | b2      | b3      | b4      |
| 13      | 101     | G    |   a1    | a2      | a3      | a4      |

这是带有这些数据集的SQLFiddle:http ://sqlfiddle.com/#!2/52839有
任何参与者吗?非常感谢您的投入。
谢谢!

戈登·利诺夫

最简单的方法将是对使用group_concat()具有substring_index()

select i.item_id, i.user_id, i.data,
       substring_index(group_concat(id.detail order by id.id desc), ',', 1
                      ) as last_detail,
       substring_index(group_concat(case when id.ignored = 0 then id.detail1 end order by id.id desc), ',', 1
                      ) as last_non_ignored_detail1
       substring_index(group_concat(case when id.ignored = 0 then id.detail2 end order by id.id desc), ',', 1
                      ) as last_non_ignored_detail2
       substring_index(group_concat(case when id.ignored = 0 then id.detail3 end order by id.id desc), ',', 1
                      ) as last_non_ignored_detail3
       substring_index(group_concat(case when id.ignored = 0 then id.detail4 end order by id.id desc), ',', 1
                      ) as last_non_ignored_detail4
  from items i join
       item_detail id
       on i.item_id = id.item_id
 group by i.item_id;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL从同一表中选择两个最大行,并与第三个表联接

来自分类Dev

SQL查询以从两个表中选择并与第三个表进行比较

来自分类Dev

SQL查询以从两个表中选择并与第三个表进行比较

来自分类Dev

SQL - 从两个相等的表中选择并显示与第三个值一起连接的两个值

来自分类Dev

使用第三个表(SQL)连接两个表

来自分类Dev

MySql从两个表中多次选择并将它们的结果连接到第三个表

来自分类Dev

从两个SQLFORM.grid中选择记录,然后将记录插入第三个表中

来自分类Dev

如何连接两个表并按第三个表排序?

来自分类Dev

连接两个表+第三个表作为条件列

来自分类Dev

如何使用第三个表连接没有公用列的两个SQL表,该表包含两个表的列

来自分类Dev

SQL查询从多个表中选择并创建第三个表

来自分类Dev

选择具有第一个条件的第三个表 [SQL]

来自分类Dev

mysql连接三个表,同一表两次

来自分类Dev

当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

来自分类Dev

当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

来自分类Dev

如何将两个不同的表连接在一起并合计为第三个表

来自分类Dev

左联接两个表到第三个表

来自分类Dev

使用INNER JOIN将两个表合并为第三个表

来自分类Dev

将两个表中的值插入第三个表中

来自分类Dev

显示两个表的输出,但通过第三个表进行匹配

来自分类Dev

比较两个工作表以创建第三个工作表

来自分类Dev

从其他两个表更新第三个表

来自分类Dev

如何从两个相关表中获取数据并放入第三个表

来自分类Dev

按第三个表的条件过滤的两个表的分组计数查询

来自分类Dev

如何使用第三个表SQL Server从两个相关的表中检索数据

来自分类Dev

如何使用第三个表SQL Server从两个相关的表中检索数据

来自分类Dev

如何从两个表中获取ID列表并在我的SQL中传递第三个表

来自分类Dev

联接两个表,这些表的键引用第三个表上的相同键,而不使用第三个表

来自分类Dev

连接两个表并在cakephp的第三个控制器中显示数据

Related 相关文章

  1. 1

    SQL从同一表中选择两个最大行,并与第三个表联接

  2. 2

    SQL查询以从两个表中选择并与第三个表进行比较

  3. 3

    SQL查询以从两个表中选择并与第三个表进行比较

  4. 4

    SQL - 从两个相等的表中选择并显示与第三个值一起连接的两个值

  5. 5

    使用第三个表(SQL)连接两个表

  6. 6

    MySql从两个表中多次选择并将它们的结果连接到第三个表

  7. 7

    从两个SQLFORM.grid中选择记录,然后将记录插入第三个表中

  8. 8

    如何连接两个表并按第三个表排序?

  9. 9

    连接两个表+第三个表作为条件列

  10. 10

    如何使用第三个表连接没有公用列的两个SQL表,该表包含两个表的列

  11. 11

    SQL查询从多个表中选择并创建第三个表

  12. 12

    选择具有第一个条件的第三个表 [SQL]

  13. 13

    mysql连接三个表,同一表两次

  14. 14

    当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

  15. 15

    当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

  16. 16

    如何将两个不同的表连接在一起并合计为第三个表

  17. 17

    左联接两个表到第三个表

  18. 18

    使用INNER JOIN将两个表合并为第三个表

  19. 19

    将两个表中的值插入第三个表中

  20. 20

    显示两个表的输出,但通过第三个表进行匹配

  21. 21

    比较两个工作表以创建第三个工作表

  22. 22

    从其他两个表更新第三个表

  23. 23

    如何从两个相关表中获取数据并放入第三个表

  24. 24

    按第三个表的条件过滤的两个表的分组计数查询

  25. 25

    如何使用第三个表SQL Server从两个相关的表中检索数据

  26. 26

    如何使用第三个表SQL Server从两个相关的表中检索数据

  27. 27

    如何从两个表中获取ID列表并在我的SQL中传递第三个表

  28. 28

    联接两个表,这些表的键引用第三个表上的相同键,而不使用第三个表

  29. 29

    连接两个表并在cakephp的第三个控制器中显示数据

热门标签

归档