MySQL:对于表中的每一行,然后从其他表

时间:2015-06-18 04:00:29

标签: php mysql

我在MySQL遇到问题。它涉及两个表,现在第一个表查询 TrackingNo ,然后其他表根据 TrackingNo 查询详细信息。 (见下面的示例图片)

>>表1

enter image description here

>>表2

enter image description here

正如您可以看到上面的图片,表1 返回77 records,然后这77个记录包含 Table2 的详细信息。例如, TrackNo。< / strong> xxx000001必须获得最新的日期/时间,即2015-03-09 17:53:14,并且在其他TrackNo上相同。

我的问题是我应该使用什么查询?我认为,这个问题在使用WITH CTE的SQL Server上运行得很好,但我做了一些研究, MySQL 不支持WITH Clause

&GT;&GT;期望的输出:

+-----------+----------+---------------------+
|  TrackNo  |  Status  |      Date/Time      |
+===========+==========+=====================+
| xxx000001 | Logged   | 2015-03-09 17:53:14 |
+-----------+----------+---------------------+
| xxx000002 | Prepped  | 2014-08-15 17:19:00 |
+-----------+----------+---------------------+
| xxx000003 | Analyzed | 2014-10-10 11:12:00 |
+-----------+----------+---------------------+

非常感谢任何建议和替代方案!

提前致谢!

3 个答案:

答案 0 :(得分:0)

试试这个:

SELECT 
   t2.TrackNo, 
   t2.Status, 
   MAX(t2.DateTime) 
FROM Table1 t1, Table2 t2 
WHERE t1.TrackNo = t2.TrackNo 
GROUP BY t2.TrackNo

答案 1 :(得分:0)

在MYSQL中,我们有一个名为JOINS的强大操作。 您可以使用JOIN根据两个表上相同的列来获取两个表的输出。

例如:

   SELECT 
   table2.TrackNo, table2.Status, MAX(table2.DateTime) 
FROM Table1 table1, Table2 table2
WHERE table1.TrackNo = table2.TrackNo 
GROUP BY table2.TrackNo;

答案 2 :(得分:0)

SELECT * FROM TrackingNo为t1,其中t1.date =(从TrackingNo中选择max(t2.date)为t2,其中t1.trackNo = t2.trackNo)