mysql - 从行中为每个外键选择最大数据

标签 mysql sql subquery

我有一个 MySQL 数据库,其中有一些表。

使用此查询:

SELECT anagrafe.MARCHIO, anagrafe.BOLO, anagrafe.NUMERO_AZIENDALE, visite.COLLOCAZIONE, visite.DATA_PREVISTA_PARTO, visite.DATA_VISITA  
FROM anagrafe LEFT JOIN visite USING(NUMERO_AZIENDALE) 
WHERE visite.STATO_VISITA ='Gravida' AND visite.DATA_PREVISTA_PARTO > '2017-04-01'

我明白了: enter image description here 但我只需要每个 NUMERO_AZIENDALE 具有 max(DATA_VISITA) 的行(见红色)

NUMERO_AZIENDALE 是anagrafe(一张表)的外键,也是visite(一张表)的主键的一部分。 主键由 NUMERO_AZIENDALE 和 ID 组成(此处未显示)

我尝试使用 GROUP BY NUMERO_AZIENDALE,但是 visite.COLLOCAZIONE 没有正确显示,也就是说,查询显示了我不需要的行的值

最佳答案

您可以对基于 NUMERO_AZIENDALE 和 DATA_VISITA 按 NUMERO_AZIENDALE 分组的元组使用 in 子句

  SELECT  anagrafe.MARCHIO, anagrafe.BOLO, anagrafe.NUMERO_AZIENDALE,
           visite.COLLOCAZIONE, visite.DATA_PREVISTA_PARTO, visite.DATA_VISITA 
  FROM anagrafe LEFT JOIN visite USING(NUMERO_AZIENDALE
  WHERE visite.STATO_VISITA ='Gravida' AND visite.DATA_PREVISTA_PARTO > '2017-04-01'
  AND (anagrafe.NUMERO_AZIENDALE, visite.DATA_VISITA ) IN 
  ( 
  SELECT  anagrafe.NUMERO_AZIENDALE, max(visite.DATA_VISITA)  
  FROM anagrafe LEFT JOIN visite USING(NUMERO_AZIENDALE) 
  WHERE visite.STATO_VISITA ='Gravida' 
    AND visite.DATA_PREVISTA_PARTO > '2017-04-01'
    GROUP BY anagrafe.NUMERO_AZIENDALE
    ) 

关于mysql - 从行中为每个外键选择最大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44263435/

相关文章:

mysql - 在 JBoss 上部署时出现 C3P0ConnectionProvider 错误

mysql - 如何在 SQL 查询中仅包含最后一个匹配项

sql - 当行匹配postgres中的 bool 条件时如何获取前一行和后一行

mysql - 从内容帖子中删除选定的文本而不删除帖子本身 (Wordpress)

mysql: 'WHERE something!=true' 排除字段为 NULL

javascript - .post 带有 PHP 的 javascript 以启用 select 语句返回

sql - IntelliJ IDEA 13 SQL 语句高亮

mysql - 回答了,但是为什么呢? Mysql 第一个查询运行第二个不需要理解为什么?

mysql - 有什么办法可以优化这个 MySQL 查询吗?

mysql - 如何创建复杂的嵌套选择 View ?