我的桌子
产品
pid name
1 AA
2 bb
3 cc
历史表
hid pid uid
1 1 1
2 1 2
3 1 1 // this one should join with pid 1
4 3 2 // this one should join with pid 3
5 2 3
6 2 1 // this one should join with pid 2
我想在产品上显示最近的出价工具。历史记录表存储出价工具 如果产品没有出价就需要返回null。
谢谢
答案 0 :(得分:2)
像
这样的东西SELECT *
FROM product p LEFT JOIN
(
SELECT ht.*
FROM History_table ht INNER JOIN
(
SELECT pid,
MAX(hid) last_hid
FROM History_table ht
GROUP BY pid
) lstItem ON ht.pid = lstItem.pid
AND ht.hid = lstItem.last_hid
) ht ON p.pid = ht.pid
首先,您需要检索每个pid的MAX hid,根据定义,它应该是最近的条目。
然后将其连接回同一个历史记录表以检索uid。
最后将此(LEFT JOIN)加入实际产品表。
希望有所帮助。