所以我每次都试图获得独特的结果,但我无法让它正常工作。
用户可以在表中有多个条目,但我希望它只提取2个唯一条目,无论每个用户在表中有多少。
这不应该那么困难。在MySQL中似乎更容易,即使它可能是非标准的。无论如何,这就是我所拥有的,它仍然会带来多重结果。它不应该允许多个mem_id's
应该是唯一的。现在,这两个结果允许相同的mem_id
。
SELECT media_id,mem_id FROM battle_entries WHERE active='1' AND
mem_id!=".$mem_id." GROUP BY media_id,mem_id ORDER BY RANDOM() LIMIT 2
修改
----------------------------------------------------
| btl_id | mem_id | posted | media_id | active |
----------------------------------------------------
这就是我的表格列{J} btl_id
,bigserial
,mem_id
和media_id
为posted
并且有效bigint
mem_id可能有多行不唯一,因为用户有多个条目。我想通过mem_id拉出两个随机但唯一的行,但也检索select中的media_id。希望这更清楚。
答案 0 :(得分:0)
试试这个:
SELECT * FROM
(SELECT DISTINCT ON (mem_id) mem_id, media_id
FROM battle_entries
WHERE active='1' AND mem_id!=1) s
ORDER BY RANDOM() LIMIT 2;
答案 1 :(得分:0)
你可以使用row_number:
with cte as (
select
*,
row_number() over (partition by mem_id order by random()) as row_num
from battle_entries
where active = 1 and mem_id <> 1
)
select *
from cte
where row_num = 1
limit 2