2017-07-26 32 views
1

我有在共同列两个表是M_ID基础上,我必须选择客户详细最大DATE_TIME让我们把该表作为客户:Mysql的记录基于多个where子句

+------+--------+-------+ 
| m_id | cus_id | se_id | 
+------+--------+-------+ 
| 5 | 2  | 12 | 
| 7 | 2  | 12 | 
| 9 | 3  | 13 | 
| 8 | 2  | 12 | 
+------+--------+-------+ 

这是表cus_detail:

+---------+----------+--------------------+ 
| m_id | taxonomy | date_time   | 
+---------+----------+--------------------+ 
|  5 | es  |2015-09-16 11:46:53 | 
|  5 | es1  |2015-09-16 11:47:40 | 
|  7 | es2  |2015-09-16 11:49:46 | 
|  7 | es2  |2015-09-16 12:20:31 | 
|  8 | es3  |2015-09-23 07:01:21 | 
|  8 | es3  |2015-09-23 07:02:21 | 
|  9 | es4  |2015-09-23 07:03:17 | 
|  4 | es5  |2015-09-23 07:50:29 | 
+---------+----------+--------------------+ 

我已经从客户的两个输入被cus_id和SE_ID基于我必须选择具有最大DATE_TIME值M_ID和客户细节如果cus_id = 2和SE_ID = 12意味着第一它传递给第一个表,并获得m_id并将该m_id传递给第二个表wh ERE DATE_TIME也最大我期待下面的结果

+---------+----------+--------------------+ 
| m_id | taxonomy | date_time   | 
+---------+----------+--------------------+ 
|  5 | es1  |2015-09-16 11:47:40 | 
|  7 | es2  |2015-09-16 12:20:31 | 
|  8 | es3  |2015-09-23 07:02:21 | 
+---------+----------+--------------------+ 

我正在尝试下面的MySQL查询,但没有得到它的答案

SELECT * FROM `cus_detail` WHERE m_id in (SELECT m_id from customer where cus_id=2 and se_id=12) and date_time=(select max(date_time) from cus_detail) 

请指导我得到正确的结果,我想离开加盟意愿帮我,但无法得到它

+0

编写你想要的答案,并且得到你尝试过什么 –

+0

我没有得到任何输出答案,我提到了预期的结果 – Sathish

回答

1

您所查询的是:

SELECT * FROM `cus_detail` 
WHERE m_id in (SELECT m_id from customer where cus_id=2 and se_id=12) 
and date_time=(select max(date_time) from cus_detail) 

date_time选择缺少一个关键m_id来确定正确的max(date_time)

SELECT * FROM cus_detail cd 
INNER JOIN customer c ON c.m_id=cd.m_id AND c.cus_id=2 and c.se_id=12 
INNER JOIN (select max(date_time) date_time,m_id from cus_detail GROUP BY m_id) cd2 
ON cd.m_id=cd2.m_id and cd.date_time=cd2.date_time;