我有用户出价项目的数据(按照时间asc排序):
item_id, win, user_id
------------------
1, 0, 1
1, 0, 2
1, 1, 1
2, 0, 3
2, 0, 4
2, 1, 3
我只需要选择在竞标某个项目时丢失的用户。因此对于item_id = 1:用户nr 1丢失,因为用户nr 2出价更高,然后用户nr 2也因为用户nr 1出价更高而丢失。对于此项,SELECT应返回user_id = 2。
如何以智能方式选择所有此类用户?
答案 0 :(得分:3)
SELECT item_id, user_id
FROM your_table
GROUP BY item_id, user_id
HAVING MAX( win ) = 0;
答案 1 :(得分:0)
使用您的表名更改此处的“出价”
select t.item_id, t.user_id from (
select item_id, user_id
from bids
group by item_id, user_id
) t
left join (select item_id, user_id from bids where win = 1 ) winners
ON
t.item_id = winners.item_id
AND
t.user_id = winners.user_id
WHERE
winners.item_id IS NULL