在我的表格中,我有"邮箱"一栏.我想 Select 1000个数据,其中最多100封邮件是"gmail".有没有办法编写一个查询来获取数据?

我要做的是,创建两个查询,然后合并它们.

SELECT email from my_table where email not like '%@gmail.%' limit 900;
SELECT email from my_table where email like '%@gmail.%' limit 100;

推荐答案

一个简单的union all就够了.然而,为了确保你得到的是union all0行(如果@gmail有超过union all0行但少于union all行),你可以这样做:

with u as 
(SELECT email from my_table where email like '%@gmail.%' limit 100)
select * from u
union all
(SELECT email from my_table 
where email not like '%@gmail.%' 
limit 1000 - (select count(*) from u));

Sql相关问答推荐

SQL查询组类值在同一行中,并连接和排序其他值

从以前的非空值行中获取值

基于前面行的值:当x&>2时重复1,当连续3行x=0时则重复0

LEFT JOIN不显示计数0我期望的方式

如何根据给定条件PostgreSQL迭代减少组中的行数

我希望以正确的升序获取SQL结果.怎样才能得到它们?

PostgreSQL抽奖查询

导出部分条形码字符串GS1-128

查询页面推荐

如何为该查询编写正确分区依据

比较SQL中以逗号分隔的字符串

在 postgres 中插入或更新 jsonb 数组的对象

MS ACCESS 错误插入 X(...) 从 A 联合 Select ... 从 B

以 15 分钟为间隔的使用情况SQL 查询

SQL查询以获取从特定可变日期看到的用户

面对来自以下两个代码的不同输出

连接表时避免重复

在 Athena / Presto 中提取 JSON 对象以获取动态密钥

使用分隔符拆分字符串并将它们放在 sql 中的多行中不起作用

解释 ADD COLUMN xxx varchar(255) DEFAULT FALSE 的行为;