-1

我需要选择固定帖子 ID、按用户 ID 分组和最新日期的语句。这是我所拥有的:

$bids = "SELECT uid, Max(date_made), bid FROM ".$wpdb->prefix."auction_bids WHERE pid=$pid GROUP BY uid";

在这个查询中,只有日期有问题,它返回第一个结果,但我需要最后一个。这是我的数据库的屏幕: BD

4

3 回答 3

3

您需要获得分组最大值

SELECT uid, date_made, bid
FROM   ${wpdb->prefix}auction_bids NATURAL JOIN (
  SELECT   uid, MAX(date_made) AS date_made
  FROM     ${wpdb->prefix}auction_bids
  WHERE    pid = $pid
  GROUP BY uid
) AS t
WHERE  pid = $pid

sqlfiddle上查看。

于 2012-06-29T23:57:46.070 回答
0

使用 min 而不是 max 并获取 id,然后加入:

$bids = "SELECT ss.uid, ss.min, b.bid FROM ".$wpdb->prefix."auction_bids bid INNER JOIN (SELECT uid, MIN(date_made) as min FROM ".$wpdb->prefix."auction_bids WHERE pid=$pid GROUP BY uid) ss ON ss.uid = bid.uid";

不清楚你想从你的英语中得到什么。对不起。

于 2012-06-29T23:58:03.833 回答
0

试试这个

"SELECT pre.uid, pre.date_made, pre.bid
FROM ".$wpdb->prefix." AS pre
WHERE pre.pid = $pid AND date_made = 
    (SELECT MAX(pre2.date_made) FROM ".$wpdb->prefix." AS pre2 
    WHERE pre2.uid = pre.uid)
GROUP BY pre.uid";

有点复杂但高效。类似于eggyal的答案,但我使用的是 theta 风格的编码,因此很容易理解。

于 2012-10-12T18:06:05.510 回答