Mysql连接查询问题

时间:2011-06-23 04:44:01

标签: mysql

我的桌子

产品

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。

谢谢

1 个答案:

答案 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)加入实际产品表。

希望有所帮助。