我有一张桌子
| A | B | C | D |
|--------|---|---|---|
| Value1 | x | x | x |
| Value1 | y | x | y |
| Value1 | x | x | x |
| .... |
| Value2 | x | x | x |
| Value2 | x | x | x |
| Value2 | x | x | x |
| .... |
| Value3 | x | x | x |
| Value3 | x | x | x |
| Value3 | x | x | x |
其中A
列可以有一组值。我想获得A
列中每个唯一值的随机记录。
答案 0 :(得分:2)
您可以使用窗口功能:
select *
from (
select
t.*,
row_number() over(partition by a order by random()) rn
from mytable t
) t
where rn = 1
row_number()
为具有相同a
的组中的每个记录分配一个随机等级;然后,外部查询每组过滤一条记录。
实际上,由于您正在运行Postgres,因此也可以使用distinct on
,它可以提供更好的性能(和较短的语法):
select distinct on (a) t.*
from mytable t
order by a, random();
答案 1 :(得分:1)
您可以使用String jsonString = "";
try {
JSONObject obj = new JSONObject();
obj.put("email", "abc@xyz.com");
obj.put("pwd", "12356");
jsonString = obj.toString();
//out put like this -> {"email":"abc@xyz.com","pwd":"123456"}
Log.d("JsonString__",jsonString);
}catch (Exception e){};
来做到这一点:
distinct on
在DISTINCT ON上,您告诉PostgreSQL为每个返回一行 ON子句定义的唯一组。
有关此主题的更多信息:https://www.geekytidbits.com/postgres-distinct-on/