在 MySQL 中获取最大值对应的列
Get corresponding column to MAX value in MySQL
我不明白在使用 MAX() 时我需要做什么才能从联接的 table 的不同列中获取值。
SELECT layout.NAME,layout.ID,MAX(inventory_reports.CLOSETIME)
FROM layout
LEFT JOIN inventory_reports ON layout.ID = inventory_reports.POSID
WHERE layout.INVENTORY = 1 AND layout.AVAILABLE = 1
GROUP BY layout.ID
ORDER BY layout.NAME
table inventory_reports
还包含名为 CLOSER
的列。如何获取与 MAX(inventory_reports.CLOSETIME)
匹配的行的值?
我试过加入子查询,但到目前为止我的所有尝试都给出了错误的结果。
试试这个:
SELECT l.NAME,
l.ID,
ir1.MAX_CLOSETIME,
ir2.CLOSER
FROM layout AS l
LEFT JOIN (
SELECT POSID, MAX(inventory_reports.CLOSETIME) AS MAX_CLOSETIME
FROM inventory_reports
GROUP BY POSID
) AS ir1 ON l.ID = ir1.POSID
LEFT JOIN inventory_reports AS ir2
ON ir1.POSID = ir2.POSID AND ir1.MAX_CLOSETIME = ir2.CLOSETIME
WHERE l.INVENTORY = 1 AND l.AVAILABLE = 1
ORDER BY l.NAME, l.ID
我不明白在使用 MAX() 时我需要做什么才能从联接的 table 的不同列中获取值。
SELECT layout.NAME,layout.ID,MAX(inventory_reports.CLOSETIME)
FROM layout
LEFT JOIN inventory_reports ON layout.ID = inventory_reports.POSID
WHERE layout.INVENTORY = 1 AND layout.AVAILABLE = 1
GROUP BY layout.ID
ORDER BY layout.NAME
table inventory_reports
还包含名为 CLOSER
的列。如何获取与 MAX(inventory_reports.CLOSETIME)
匹配的行的值?
我试过加入子查询,但到目前为止我的所有尝试都给出了错误的结果。
试试这个:
SELECT l.NAME,
l.ID,
ir1.MAX_CLOSETIME,
ir2.CLOSER
FROM layout AS l
LEFT JOIN (
SELECT POSID, MAX(inventory_reports.CLOSETIME) AS MAX_CLOSETIME
FROM inventory_reports
GROUP BY POSID
) AS ir1 ON l.ID = ir1.POSID
LEFT JOIN inventory_reports AS ir2
ON ir1.POSID = ir2.POSID AND ir1.MAX_CLOSETIME = ir2.CLOSETIME
WHERE l.INVENTORY = 1 AND l.AVAILABLE = 1
ORDER BY l.NAME, l.ID