从一个表中获取所有记录加上第二个表的相对最后一条记录

白板

情况(简化):

表A

id  | id_device
----+----------
... | 10
... | 11
... | 12

表B

id  | id_device | val
----+-----------+----
... | 10        | 200
... | 10        | 105
... | 10        | 120
... | 11        | 80

预期结果:来自 的所有记录tableA,对于 的每条记录tableA, 上的最后一个相关记录tableB

id_device | val 
----------+-----
10        | 120
11        | 80
12        | null

我试过这样的事情,但我无法正确获得最后一条记录:

SELECT tableA.*,
       tableB.* 
FROM tableA
LEFT JOIN (
    SELECT id_device,
           val,
           MAX(id) 
    FROM tableB
    GROUP BY id_device
) AS tableB
     ON tableA.id_device = tableB.id_device
拉西尔·希兰

您的子查询正在and选择MAX(d)fromtableB和 undetermined 值. 为此,您需要选择,然后基于它加入。您可以通过使用简单的降序并选择顶行来实现:id_devicevalMAX(id)MAX(id)

SELECT tableA.id_device, tableB.val
FROM tableA
LEFT JOIN tableB ON tableB.id = (SELECT id
                                 FROM tableB
                                 WHERE tableA.id_device = tableB.id_device
                                 ORDER BY id DESC
                                 LIMIT 1)

这允许您从 中选择多个字段tableB,但如果您只对单个字段感兴趣,例如val,您也可以直接从子查询中选择它,而不是加入它:

SELECT tableA.id_device, (SELECT val
                          FROM tableB
                          WHERE tableA.id_device = tableB.id_device
                          ORDER BY id DESC
                          LIMIT 1) AS val
FROM tableA

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Doctrine 从与第一个表匹配的第二个表中选择最后一条记录

来自分类Dev

如何从第二个表中插入 mySQL 中的最后一条评论?

来自分类Dev

SQL Server:从一个表中获取所有数据,但条件是第二个表列

来自分类Dev

仅从第一个订单中获取一条记录,然后从第二个订单中获取其余记录

来自分类Dev

在SQL Server中查找第二个最后一条记录(如果可用,否则最后一条记录)

来自分类Dev

如何使用第二个纬度结果更新最后一条记录[SQLServer]

来自分类Dev

从一个表中获取所有列的值,并从第二个表中获取另一列的值

来自分类Dev

英孚 根据第二个表中记录的属性从一个表中选择记录,而第二个表中记录的属性为FK

来自分类Dev

MySQL从一个表中选择记录,如果它们的ID和用户名没有出现在第二个表中

来自分类Dev

如何从第二个表中获取多个记录基于使用EF从第一个表中的记录列表

来自分类Dev

将子字符串从一个表中的定界值匹配到第二个表中的记录,并建立联接

来自分类Dev

根据第一个表中的列在第二个表中插入新记录

来自分类Dev

获取第一个tbl中的所有记录,并在第二个tbl中匹配(指示已存在的记录)

来自分类Dev

Mysql - sql 如何从包含第一个表 ID 的第二个表中获取最小时间和最大时间记录

来自分类Dev

MySQL左联接:从一个表中选择所有内容,但仅将第二个表中的值与条件匹配

来自分类Dev

MySQL左联接:从一个表中选择所有内容,但仅将第二个表中的值与条件匹配

来自分类Dev

从第二个表中查找与所有记录匹配的 id

来自分类Dev

如何从第一个表和第二个表中检索所有数据

来自分类Dev

仅当第二个表中不存在记录时,才将记录从第一个表插入第二个表

来自分类Dev

当第二个表引用第一个表中的主键时,如何将记录插入到两个表中?

来自分类Dev

从表中的分组记录中选择除最后一条记录之外的所有记录

来自分类Dev

即使JOINed表中没有对应的记录,如何从一个表中获取所有记录?

来自分类Dev

从第二个和第三个表中获取与第一个表中的匹配值相对应的值

来自分类Dev

MySQL从一个表中减去第二个表中的某些行的值

来自分类Dev

MySQL从一个表中减去第二个表中的某些行的值

来自分类Dev

如何从历史记录中的最后一个命令访问第二个参数?

来自分类Dev

如何从历史记录中的最后一个命令访问第二个参数?

来自分类Dev

如何在mysql的第一个表中查找记录的最后一条记录

来自分类Dev

如何从一个表中获取 SQL 值,其中共享值在第二个表中匹配?

Related 相关文章

  1. 1

    Doctrine 从与第一个表匹配的第二个表中选择最后一条记录

  2. 2

    如何从第二个表中插入 mySQL 中的最后一条评论?

  3. 3

    SQL Server:从一个表中获取所有数据,但条件是第二个表列

  4. 4

    仅从第一个订单中获取一条记录,然后从第二个订单中获取其余记录

  5. 5

    在SQL Server中查找第二个最后一条记录(如果可用,否则最后一条记录)

  6. 6

    如何使用第二个纬度结果更新最后一条记录[SQLServer]

  7. 7

    从一个表中获取所有列的值,并从第二个表中获取另一列的值

  8. 8

    英孚 根据第二个表中记录的属性从一个表中选择记录,而第二个表中记录的属性为FK

  9. 9

    MySQL从一个表中选择记录,如果它们的ID和用户名没有出现在第二个表中

  10. 10

    如何从第二个表中获取多个记录基于使用EF从第一个表中的记录列表

  11. 11

    将子字符串从一个表中的定界值匹配到第二个表中的记录,并建立联接

  12. 12

    根据第一个表中的列在第二个表中插入新记录

  13. 13

    获取第一个tbl中的所有记录,并在第二个tbl中匹配(指示已存在的记录)

  14. 14

    Mysql - sql 如何从包含第一个表 ID 的第二个表中获取最小时间和最大时间记录

  15. 15

    MySQL左联接:从一个表中选择所有内容,但仅将第二个表中的值与条件匹配

  16. 16

    MySQL左联接:从一个表中选择所有内容,但仅将第二个表中的值与条件匹配

  17. 17

    从第二个表中查找与所有记录匹配的 id

  18. 18

    如何从第一个表和第二个表中检索所有数据

  19. 19

    仅当第二个表中不存在记录时,才将记录从第一个表插入第二个表

  20. 20

    当第二个表引用第一个表中的主键时,如何将记录插入到两个表中?

  21. 21

    从表中的分组记录中选择除最后一条记录之外的所有记录

  22. 22

    即使JOINed表中没有对应的记录,如何从一个表中获取所有记录?

  23. 23

    从第二个和第三个表中获取与第一个表中的匹配值相对应的值

  24. 24

    MySQL从一个表中减去第二个表中的某些行的值

  25. 25

    MySQL从一个表中减去第二个表中的某些行的值

  26. 26

    如何从历史记录中的最后一个命令访问第二个参数?

  27. 27

    如何从历史记录中的最后一个命令访问第二个参数?

  28. 28

    如何在mysql的第一个表中查找记录的最后一条记录

  29. 29

    如何从一个表中获取 SQL 值,其中共享值在第二个表中匹配?

热门标签

归档