MySQL - Select N 个不同记录所在的所有行
MySQL - Select all rows where an N quantity of distinct records are at
我有一个 table,其中包含地址、日期和一些其他信息。
我想要 select N
个唯一数量的地址,在 N
条记录中,我想要 select 该地址所在的所有行中的所有内容是,因为地址在该列中不是唯一值。
Date | Address | MoreInfo
1/2/2000 | 123 SUPER LN | SOME MORE BORING INFO
2/3/2000 | 123 SUPER LN | SOME MORE BORING INFO
5/3/2000 | 567 AWESOME ST | SOME MORE BORING INFO
5/26/2000 | 567 AWESOME ST | SOME MORE BORING INFO
7/2/2000 | 987 SUPER LN | SOME MORE BORING INFO
8/3/2000 | 1100 BORING DR | SOME MORE BORING INFO
11/7/2000 | 1100 BORING DR | SOME MORE BORING INFO
1/5/2001 | 564 SUPER LN | SOME MORE BORING INFO
因此,对于该数据,我想获取 3 个不同的地址(123 SUPER LN, 567 AWESOME ST, 987 SUPER LN
),并从这 3 个地址所在的所有行中获取所有内容。
我有一个疑问:
SELECT *
FROM my_table
WHERE my_condition = true
GROUP BY address
但这只为每个地址带来 1 行,我想获取那些 N
地址所在的所有行。谢谢!
我想这就是你想要的:
select t.*
from (select distinct address
from my_table
where my_condition = true
limit 100 -- this is the N
) a join
my_table t
on a.address = t.address;
第一个子查询获取地址列表。 join
带回原来的行。
我有一个 table,其中包含地址、日期和一些其他信息。
我想要 select N
个唯一数量的地址,在 N
条记录中,我想要 select 该地址所在的所有行中的所有内容是,因为地址在该列中不是唯一值。
Date | Address | MoreInfo
1/2/2000 | 123 SUPER LN | SOME MORE BORING INFO
2/3/2000 | 123 SUPER LN | SOME MORE BORING INFO
5/3/2000 | 567 AWESOME ST | SOME MORE BORING INFO
5/26/2000 | 567 AWESOME ST | SOME MORE BORING INFO
7/2/2000 | 987 SUPER LN | SOME MORE BORING INFO
8/3/2000 | 1100 BORING DR | SOME MORE BORING INFO
11/7/2000 | 1100 BORING DR | SOME MORE BORING INFO
1/5/2001 | 564 SUPER LN | SOME MORE BORING INFO
因此,对于该数据,我想获取 3 个不同的地址(123 SUPER LN, 567 AWESOME ST, 987 SUPER LN
),并从这 3 个地址所在的所有行中获取所有内容。
我有一个疑问:
SELECT *
FROM my_table
WHERE my_condition = true
GROUP BY address
但这只为每个地址带来 1 行,我想获取那些 N
地址所在的所有行。谢谢!
我想这就是你想要的:
select t.*
from (select distinct address
from my_table
where my_condition = true
limit 100 -- this is the N
) a join
my_table t
on a.address = t.address;
第一个子查询获取地址列表。 join
带回原来的行。