MySQL SELECT两个表

时间:2014-02-23 11:38:30

标签: mysql sql inner-join

我有两张桌子:

TABLE_1:

 | ID     | numero | apagado
 |  1     |  23    |   0
 |  2     |  56    |   0
 |  3     |  156   |   0
 |  4     |  48    |   0

TABLE_2:

 | ID_Table_1 | data_inspecao |
 |  1         |  2014-01-03   |
 |  2         |  2014-01-08   |
 |  1         |  2014-02-20   |
 |  4         |  2014-01-06   |
 |  2         |  2014-01-23   |

我想为所有'numero'获取最新的'data_inspecao'。

在我的例子中,我想要以下结果:

 | ID_Table_1 | data_inspecao |
 |  1         |  2014-02-20   |
 |  2         |  2014-01-23   |
 |  4         |  2014-01-06   |

我有以下SELECT语句,但是如果我为'ASC'更改'DESC'结果是相同的,我没有得到最新的'data_inspecao':

SELECT 
    e.numero, i.data_inspecao 
FROM 
    table_1 e 
INNER JOIN 
    table_2 i ON i.ID_Table_1 = e.numero 
WHERE 
    e.numero = 6 AND e.apagado = 0 
GROUP BY 
    e.numero 
ORDER BY 
    i.data_inspecao DESC

感谢任何帮助

3 个答案:

答案 0 :(得分:2)

使用添加了MAX聚合

的示例
SELECT 
    e.numero, Max(i.data_inspecao) as MostRecentDate 
FROM 
    table_1 e 
INNER JOIN 
    table_2 i ON i.ID_Table_1 = e.numero 
GROUP BY 
    e.numero 
ORDER BY 
   e.numero

答案 1 :(得分:0)

SELECT i.ID_Table_1, MAX(i.data_inspecao )
FROM table_1 e 
INNER JOIN table_2 i ON i.ID_Table_1 = e.ID     
GROUP BY i.ID_Table_1 

答案 2 :(得分:0)

您说您想要所有data_inspecao的最新numero。但是在您的“我想要以下结果”的示例中,您似乎想要data_inspecao的最新ID_table_1。这两个需要非常不同的查询。在写我的查询之前,我会尝试澄清这一点。

如果您想获取所有data_inspecao的最新numero,我会尝试使用@Milen Pavlov的答案。

但是如果你真的想要得到像你的示例结果表那样的结果,我会尝试这个查询:

SELECT ID_TABLE_1, MAX(data_inspecao)
FROM Table_2
GROUP BY ID_TABLE_1;