从单个表中获取两列,其中一列是最大值,并按该最大值列分组


Get two columns from single table where one is max and group by that max column

表:XYZ+----+-----------+--------+---------+|身份证 |parent_ID |状态 |user_ID |+----+-----------+--------+---------+|1 |432 |公共 |23 ||5 |432 |公共 |1 ||10 |432 |公共 |14 ||24 |432 |公共 |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_ID为 432,并且user_ID该行的ID

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

任何帮助和建议将不胜感激。

试试这个:

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')