PostgreSQL
PostgreSQL
SELECT u.id, u.name, o.amount
FROM users u
CROSS JOIN LATERAL (
SELECT amount
FROM orders o
WHERE o.user_id = u.id
ORDER BY o.created_at DESC
LIMIT 1
) o;MySQL 8
MySQL 8
SELECT u.id, u.name, o.amount
FROM users u,
LATERAL (
SELECT amount
FROM orders o
WHERE o.user_id = u.id
ORDER BY o.created_at DESC
LIMIT 1
) o;| 语义 | 子查询可引用它左侧的表 |
|---|---|
| MySQL | 8.0.14+ 支持 LATERAL 派生表 |
| 替代 | 窗口函数 ROW_NUMBER 也能实现同目标 |