从单个表中获取两列,其中一列是最大值,另一列是最大列

时间:2015-06-17 17:59:31

标签: php mysql

Table: XYZ
+----+-----------+--------+---------+
| ID | parent_ID | status | user_ID |
+----+-----------+--------+---------+
| 1  | 432       | public | 23      |
| 5  | 432       | public | 1       |
| 10 | 432       | public | 14      |
| 24 | 432       | public | 4       |
+----+-----------+--------+---------+

如果这是ID自动增量字段的情况,我可以通过以下查询获取最后一个ID:

SELECT MAX(ID)
FROM XYZ
WHERE parent_ID = 432
   AND status = 'public'

如何使用单个查询抓取两个字段:IDuser_ID,以便我可以获得以下结果:

array(
   'ID' => 24
   'user_ID' => 4
)

这意味着ID的最大值,其中parent_IDuser_ID行的432和ID

我看过this answer并试过了,但就我而言,我没有按ID分组和最大ID分组。就我而言,一切都是ID。我知道我可以拥有它们,然后可以运行foreach以PHP方式获取最大值,但我认为单个SQL查询在这里要快得多。

非常感谢任何帮助和建议。

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT ID, user_ID
FROM XYZ AS x
INNER JOIN (SELECT MAX(ID) AS maxID
            FROM XYZ
            WHERE parent_ID = 432 AND status = 'public') t
ON x.ID = t.maxID

或者,或者:

SELECT ID, user_ID
FROM XYZ 
WHERE ID = (SELECT MAX(ID) AS maxID
            FROM XYZ
            WHERE parent_ID = 432 AND status = 'public')