我需要选择固定发布ID,按用户ID分组和最新日期的语句。这就是我所拥有的:
$bids = "SELECT uid, Max(date_made), bid FROM ".$wpdb->prefix."auction_bids WHERE pid=$pid GROUP BY uid";
在这个查询只有日期的问题,它返回第一个结果,但我需要最后。 这是我的数据库的屏幕:
答案 0 :(得分:3)
您需要获取groupwise maximum:
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上查看。
答案 1 :(得分: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";
目前还不清楚你的英语是什么。遗憾。
答案 2 :(得分: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样式编码,因此很容易理解。