SQL从其他表中选择MAX

时间:2016-08-23 09:00:49

标签: mysql

我有两张桌子。

表1:

| ID | NAME |
|----|------|
| 1  | aaa  |
| 2  | aaa  |
| 3  | aaa  |
| 4  | bbb  |
| 5  | bbb  |

表2:

| ID | DATE     |
|----|----------|
| 1  | 12/07/10 |
| 2  | 12/07/13 |
| 3  | 12/07/16 |
| 4  | 12/07/08 |
| 5  | 12/07/20 |

请帮助我,我不知道SELECT MAX ID 中{strong> table1 } <{1}} date >

例如结果应为:

  

表示“aaa”:表2中的ID 3

     

代表“bbb”:来自table2的ID 5

我正在尝试这样的事情:

table2

但它不起作用......你有什么想法吗?

3 个答案:

答案 0 :(得分:0)

  

我尝试使用此查询获取MAX日期。

     

注意:在表格中,日期格式应为(Y-m-d),并且字段应设置为日期以便操作操作

表格-1 (名称:test1)

enter image description here

表格 - 2 (名称:test2)

enter image description here

  

从其他表中获取MAX

SELECT MAX(dates) FROM test2 JOIN test1 WHERE test1.name='aaa'

<强>输出

enter image description here

希望这个查询可以解决您的问题。

答案 1 :(得分:0)

您需要为联接添加其他条件(t1.id = t2.id):

SELECT MAX(DATE) 
FROM table2 t2, table1 t1 
WHERE t1.NAME = "aaa"
  AND t1.id = t2.id

但请 - 请勿使用逗号加入 - 请改用明确的JOIN语法:

SELECT MAX(DATE) 
FROM table2 t2
JOIN table1 t1 
  ON t1.id = t2.id
WHERE t1.NAME = "aaa"

您还可以使用GROUP BY name一次获取所有姓名的所有最长日期:

SELECT t1.NAME, MAX(t2.DATE) 
FROM table2 t2
JOIN table1 t1 
  ON t1.id = t2.id
GROUP BY t1.NAME

答案 2 :(得分:0)

select ID from Table1 where date= (select max(date) from T2 where name= 'aaa'

我没有完全找到你。但我认为这就是你想要的......如果你将这两张桌子作为一张桌子,那么它就可以作为魅力。

或者这个,就像你要求的两张表一样

SELECT T1.Id FROM T1 INNER JOIN T2 
ON T1.Id = T2.Id 
where T2.date = (select max(T2.date) from T1 where T1.name= 'aaa')